Postmortem – A Thief’s Way

Introduction

This project has been the most productive project in terms of physical work, and output. The project suffered from rigidity and setbacks, but overall has come to a successful project conclusion. The communication dynamic experienced in this project is something that I will push for in future projects. And the implementation problems are something that I can learn from to better focus the efforts of teams that I work with in the future.

Communal work sessions.

Working at the same time as my teammate resulted in efficient communication, production, problem solving, and problem management. This communication worked mostly through discord. Allowing me to ask direct task and goal based questions.  We quickly fell into similar work patterns, with a cooperative attitude on both sides of the communication. This was highly motivating for me personally, and I feel like I got a lot of good work done on our project. Moving forward I would like to make an effort to find one or more people in the group too work closely with, in a way that has a similar dynamic as this project. To do this I will be more directed in the initial stages of the project to express the way I work best and asses the most appropriate person to use as my lead. Outlining what I need to stay productive while also making an effort to respect the way they work best. If I cannot find this dynamic I will talk to facilitators about finding a solution. On top of this I plan to work on my problem solving ability to make sure that I can independently find solutions when needed. To do this I plan to work on more solo projects and implement day sprints.

Implementation failure

The core interaction mechanic did not work the way we had initially wanted it too. This was caused in part by a break down in planning, and time management, not allowing for overflow time with the level loader. Partly more complicated than initially expected. And Partly because I was hit with a depression low that drained the three days set aside to write and develop the movement mechanic. This then resulted in a mad rush to cobble something together with the physics system. This rushed and overworked attempt to get something working for playtest resulted in a burnout that lasted most of the following week, this severely reduced the amount of effort I was able to put into the hours that I was putting in.This was then compounded by focusing on non key areas in order to attempt to have a stronger output. When the problems with the core interaction were brought up during playtesting, we still opted to focus on making the project feature complete before attempting to fix the core mechanic. We did not really attempt to leverage the rushed movement system as we always intended on fixing it, but we never put planing into fixing it, as other smaller things felt more urgent. We made the ultimate decision to leave it as it was in order to get the project to a completed state. In the future, I would I plan to focus on outcome over output. Make a rule that core mechanics come first. Learn some new things to leverage in future projects that I would have benefited from knowing to develop the two core systems in this project, these being; abstract and concrete types, delegates and events, and unity Scriptable objects. To mitigate these problems in the future, I will be making sure that the core mechanics have a more defined and outline plan of implementation. And during production I would like to make a per milestone checklist, to assess the development and direction of the core mechanics.

Advertisements

Postmortem – Clutter Tool

Introduction

In the Clutter Tool project we were tasked with making a tool that could be used by us and others to improve the productivity and workflow of future projects. I was initially excited as Tool development has been something that has interested me since I got into programing. But after the idea had been settled on it quickly became apparent that the team was leaderless, unmotivated and unwilling to communicate. This resulted in production conflicts and the project simply grinding to a halt, and being abandoned shortly afterwards.

Team Communication

This is probably one of the least communicative teams that I have ever worked with. At the beginning of the project when deciding what we wanted to do as a team, there was minimal input from one of the team members and borderline nothing from the other. I believe this was caused by the desire from both of the other two members for their to be a dedicated team leader, combined with my reluctance to be team lead. I was recovering from personal issues so I was on the back foot and not as willing to drive the project as I normally would but that does not excuse the complete lack of communication from the other team members. Moving forward I plan to implement a contact standard for projects. Each team and project is different, but if I push the team to work together to agree on; Contact method. Weekly team cowork hours. Daily check ins. This will hopefully avoid the pit of failure to communicate that this project fell into.

Documentation

There was only a single document to attempt to organise this project. Not only was this ineffective but directly hampering, as no one updated their sections as they worked, this combined with the communication issues resulted in confronting work, this negatively impacted everyone. I believe this was caused by a combination of no direct team lead, and no one actually caring enough to try, myself included. This is not a work environment where team members actively want to work in a team or keep their jobs. In my experience with student projects, students will not work unless they are motivated to do so, this also includes myself. Moving forward I would like to make sure that everyone in the team is onboard and motivated to work on projects before we commence the division of work. To do this I will actively work towards making sure team projects have at least one exiting element for each member involved. This combined with a agreed upon contact standard should hopefully build a strong foundation for future group projects.

Postmortem – Banksy Patrol

Introduction

Banksy Patrol is a 2d side-scrolling reimaging of the Game moon patrol, inspired by the street artist Banksy. This was a solo project. Overall I feel the project was successful, as it completed all core requirements, and my goals for the project. However if the tasking, time management, and documentation processes where better the project would have had a smoother development and more polished finish.

Scope

The scope on Banksy Patrol was the most well managed scope that I have ever had in any project that I have worked on. I was timid in working on a solo project in the sight line of others; being my teachers and my peers, as I did not want to make a fool of myself. This resulted in taking a very stripped back approach to the project, limiting everything to the bare minimal before moving forward. This helped the project to have something close to a successful outcome. The reasons for my scope management were not the best reasons to have successful scope management, but in the end had a positive effect. Moving forward I will work harder to be more considerate with about my workload in regards to deadlines and my personal situation. To do this I will put more focus into the project planning so that it has a stronger direction. This plan will include break points to allow for discarding of unnecessary work to lighten the load when needed.

Slow Productivity

The project was not completed to the desired degree regardless of the scope. The minimal and ineffective documentation really hampered productivity. The documentation was not well thought out or kept up to date as well as it should have been. This is a recurring problem that is just going to take personal effort to improve. To move forward with this problem I plan to keep a notes document open while working to dot-point with progress as I go. Than after a work session is completed I will have a log of my work and thought process. I can use this for updating tasking, and updating documentation, and writing Dev Logs while I work. To avoid any negative impacts this new process may have on my development process and productivity for the remainder of the tiremaster I will be starting this new process over the 3 week break.

Quick art for the lazy

Lets make Quick art.

This is a full step by step breakdown of how I put together the art for Banksy Patrol. The phone booth picture that I am using as a base is by Banksy. This method is also how I do a lot of my placeholder art, as it is generally quick, and results in an interesting outcome. In this case I will be showing you how to make grayscale assets. This will be a little bit different than my normal process, as we will be starting with a 50% gray canvas opposed to my regular black. I will explain why later. I also suggest picking a hard surface object to start with as soft surfaces and organics require a higher level of fidelity to look right, and that comes with practice.

Step By Step

This entire tutorial will go faster if you are plugged in with some good instrumental music, a simple asset that you want to make, and actually have Adobe Photoshop installed…

1.1 – Setting up the file.

In most situations when I am not trying to develop finished art, I will start with a square size of 512 (for publish level art use 1024). I tend to keep my image sizes small even in Photoshop as this technique is not really designed for super as super high LOD(Level of Detail)

Set width and height as the same size to keep the art work square, as this is a good thing to do (Look into image compression if you want to know more). Resolution is how many pixels are in a square inch, Photoshop defaults to Pixels per square Inch (More info here). Give your file a name, if you want. and then you can normally leave the rest of the data as default, and I would advise you do exactly that.

1.2 – Get the image in and make a copy of it.

Once you have the file open, you can simply drag and drop the image into Photoshop like you drag any old file from one place to another. Why we want to drag the image in instead of simply opening the image through Photoshop, is the simple fact that the image you get will be the wrong size and resolution, almost every time. Once you drag the image in use the transform tools to scale (hold shift while scaling to lock ratio) and position the image where you want it to be on the canvas. For fine adjustments use the arrow keys to bump the selection one pixel. Click on any other tool in the tool bar, or hit enter, and click accept on the pop up, this is just confirming that what you just did is how you want it to stay.

Now you want to make a copy of the that image, and then lock it, and hide it to hopefully never be touched again. we do this so that we always have the source image for reference, and duplication.

1.3 – Making the silhouette Part 1

In order to have a good silhouette we want to make a good selection. Photoshop has some great tools to get a good selection, but we still want to be quick about it, as that is a large part of the point of this particular technique. To make selection quicker we can use a trick with levels.

To add a level simply click the half circle at the bottom of the layers tab, preferably while the copy of source is selected, click levels in the popup. From here you will get a dialog box of a greyscale, the box has three handles. These represent the black grey and white. For easier selection we want a high contrast image, to do this you want to bring the black and white handles closer to the center like you can see in the picture below, and then move the gray handle until you have a clean edges on the main shape as you can.

1.4 – Making a selection.

To make the selection you want to use a combination of selection tools, but I suggest starting with the magic wand. You want to make sure to have the Contiguous, and Sample All Layers, both ticked. It will give you a good general selection of the shape. You can get it to sample more, by holding shift when you click this adds to the selection, while holding Alt subtracts from the selection. This is useful if the shape has any holes in it or background has any solid colours. You can also use things like the box selection tool, or the lasso selection tool, to refine the selection. Just remember to use shift to add, and alt to subtract.

The selection does not have to be perfect, we can fix any issues in the coming steps. Now depending on the selection method, inside or outside. you want to make sure the selection is on the inside. you can tell by looking at the selection outline if it is hard up against the edge of the canvas with the shape in the middle much like mine is in the supplied image. You have the outside selected. In this case you want to invert the selection, so that you have the shape its self selected, you can do this by using the invert command ctrl+shift+i. Make sure you do not click on any other tools as to avoid deselecting the selection.

1.5 – Setting a mask.

In this next step we will be setting up a mask. Masks are a common concept in image software as it enables you to ‘hide’ or cover up a portion of the image, in a way that is easy to modify. Photoshop’s masking tool is very powerful. You want to move to the Layers panel and add a new layer. This is done with the little curled corner page icon. Once the new layer is added click on it, this will not deselect the selection. Then click on the hollow circle icon, this will add a mask to the new layer.

Now that you have a layer mask you will see the shape of the selection in the layer mask. You can select between the two by clicking on the one you want to edit at any time. Right now we want to edit the standard layer, so make sure that it is selected, you can tell by the little selection markers, around the active window.

Masks are a grayscale only layer attached to the standard image layer, where the black to white values control opacity. Black is transparent. White is Opaque, any gray value in between will represent a percentage of Opacity, this is only using the B channel of Photoshops HSB colour values.

1.6 – Adding some gray

At this step we will be adding in some colour! specifically 50% gray (in HSB). #808080 in Hex. The reason why we use this particular gray colour is to allow us to have a nice middle ground, that also works with Photoshop’s lighting modes (I will touch on this later).
You can do this by making sure the standard image layer is selected as before. And the using the bucket fill tool to fill the layer. Just click anywhere in the layer.

1.7 – Understanding Ctrl+z in Photoshop

Now that we are almost all set up we need to set up a another layer to work with. Yep another layer! I use a lot of layers, when I use this technique because it is inherently destructive, meaning you can only go back as far as ctrl+z (or command z for you mac weirdo’s <3) will let you. By the way if you have tried to undo something in Photoshop like you would in almost any other program you would have noticed that it will undo, then re-do the thing you just undid! That is because Photoshop stores every ‘thing’ as a step, meaning that if you undo a ‘step’ and then undo another ‘step’ you will be undoing the undo ‘step’. Yep took me a while to get the hang of that as well. So in order to go back more ‘steps’ you need to add the alt key into the mix to form alt+ctrl+z. Hooray for hot keys (I am looking at you blender…).
Now that we have that fun mess out of the way, back to the whole layers thing.

1.8 – Adding working layers

For our working layers we will add them just like we did before, with the little folded corner page icon at the bottom of the layer stack. But we will be using another useful little tool! Clipping masks! Right click on the new layer and in the drop down click on the Create clipping mask option. The layer will indent and have this little down arrow next to it. Make sure it is above the Mask filled layer, that step is very important as the clipping mask uses the layer below it as the clipping part of the clipping mask. What this means is that what is visible in the parent layer will be visible on the clipping layer. These can be stacked up as well.

1.8 – Brush settings

We are almost at the painting stage! Now it’s time to talk about brushes in Photoshop. Brushes are how Photoshop interprets inputs onto the canvas, it takes these inputs and formats them into a shape, this shape is formed by the brush property’s. Start by selecting the brush icon in the tool bar. You will see at the top of the screen will be the tool overview. In the tool overview is the brush preset picker dropdown. Click the little arrow to open the dropdown. This is how you can pick different brushes, change the ‘size and ‘hardness’ of a brush. The hardness effects how the brush overflows outside of the size representation of the brush, that you will now see as the mouse cursor over the canvas.

1.9 – Hotkeys for real!

Now lets talk hot keys! Again! These are specifically to do with the brush so make sure you have the brush tool selected.

You can change the brush size a number of ways, same with hardness. To change brush size you can use the [ & ] keys to increase and decrease, and use { & } to change hardness. These are super useful as mousing up to the brush settings can be a huge time drain. Additionally you can also use the super funky way through mouse movement. Ctrl+alt+right mouse button hold these and move the mouse. Horizontal movement changes size. Vertical movement changes hardness.

In a addition to brush size and hardness I use flow, to slow down the output of the brush. This makes working with a mouse for painting a lot more forgiving.

You can change opacity using the number keys 1 through to 0. They will change the opacity to the number value. Tap to number quickly to get an exact value, such as 75 or 12. You can do the same with flow by holding the shift key and using the numbers. One thing I hate, is that changing opacity works on the number-pad, and that is super helpful! But holding shift to change flow will not work with the number-pad, this is due to how keyboards actually work, so unfortunately their is no way around it.

We will be making lots of layers that will be clipping masks, so the the hot key for a new layer in Photoshop is ctrl+shift+n. This will bring up a dialog box, make sure you name the layer, and when you want it to continue to be a clipping mask, make sure you check that option.

Lastly Photoshop gives you two colour to work with in quick secession. you can see them here.

To change the colours simply click on the box of the colour you want to change, and change it in the colour picker. To swap between the colours quickly you can use the x key. And that’s it! all the hot keys you should need to move forward!

Hot Key’s

  • Brush Size = [ ]
  • Brush Hardness = { }
  • Opacity = 1 through 0
  • Flow = shift+1 through 0
  • New Layer = ctrl+shift+n
  •  Swap active colour = x

2.1 – How to paint light?

Great work!! you just finished the setup stage!!!!! But in all honesty this setup stage normally takes about 2 minutes, once you know all the steps.

This is where we actually start to do some painting! So make sure you have that top layer selected, the clipping layer one, from now on ill be using layer names to make things easier to understand, Here is how I normally name my layers.

We will be incrementing the layers as we go. Lets get started!

Painting light is much easier than you would think, because our eyes recognize objects through how light interacts with that object. The main rules you need to work with are;

  1. Closer to the light source is brighter.
  2. The sharper the edge the brighter.
  3. Light follows edges
  4. Behind edges are darker.
  5. Light works as a gradient.

You will be surprised by how quickly you can begin to recognize shapes with a strong silhouette by simply adding some dark paint to the canvas. For this I am using solid black and solid white. I find this simplifies things. I am using a large brush size, the hardness on a low setting, so a soft edge. And I have my flow set to 10%. This is three strokes:

You can already see the cubic nature of the phone booth coming together. Also you want to start with a large brush with soft edges, and big strokes, to rough in the general shape. I also find it helpful to use the base image to learn the lighting of the object. You can do this by having a low opacity copy of the source image above the image locked as to not draw onto it. Something like 10% opacity normally works.

This makes it harder to see how your canvas is coming along so I would suggest not leaving it on all of the time. But this is useful for roughing out shapes internal to the object. You also want to work from the back to the front. And every time you feel happy with how it is currently looking, make a new layer and work from their.

This is the first pass with the overlay:

This is the same pass, without the overlay:

As you can see I have focused entirely on the edges of the shapes, and this now already looks like the phone booth that we started with. This takes very little time to do. Simply play with the size and hardness of the brush until it produces lines that work for you, without being to high in detail. Try to avoid being too zoomed in at any point, you want to try and have the entire object in view to start with, so that you don’t end up focusing on fine details too soon. Then draw the edge with the white, and follow up with the black or draw with black then follow up with white, work with both methods, depending on the area one may work better than the other. Draw a line, see if you like it, if you don’t, undo and try again. Try to force yourself to work quickly, that way you wont bog yourself down.

2.2 – Repeat. Repeat. Repeat.

As you refine it, you can start to zoom in, reduce the size of the brush, and reduce the flow. Here I have just slowly worked my way down in brush size as I tighten up the edges. If at any point a layer starts to look to ‘heavy’ you can tone it back by reducing its opacity. I suggest you try this with all of your layers.

At this point, I am happy with the representation, of the asset. To see how you feel make sure you zoom the image until it is the apparent size that the final asset will be to make sure it reads well.
My next step is to work on the rocks to finalize the asset.

This is a sharp outline of the rocks, this layer is to dark and I will reduce it opacity once I have finished working with it. But now is a good time to show why we made the silhouette with a mask, and why we are using clipping layers, aside from the fact that it keeps all the work within the silhouette.

2.3 – Refining the mask

Layer masks can be modified as simply as painting with a brush. Select the layer mask.

This will allow you to use white and black to change the shape of the mask. We want to refine the mask to the final shape. I suggest using a hard edge brush, with full flow and full opacity, this is to avoid any smudges. And work from the outside in, so that you don’t miss any little bits and end up with floating islands that should not be their.

2.4 – Done!!

Now that we have the final shape how we want it I am going to tone back the black lines around the rocks then shade the same way that I have done with the phone booth.

Now make sure you have saved the file with a clear name so that you do no forget what it is, and export the asset!

DD – Design Patterns – Factory

This is an outline of the topic. I will revisit this topic latter and expand on this outline.

What are Design Patterns? They are different styles of programming to help with the constant change, modification, addition, and scrapping of features, functionality, and structure of a code base.

The Factory Pattern is one of the most commonly used (Purdy, 2002). But what is the Factory pattern, well lets find out!

The logical model.

Factory’s are an object designed to wrap the actualization if the instantiation process up inside the factory. The Client orders a Product from the Factory instead of instantiating it directly. This abstracts the client from the objects production method. This way if their is ever a need to change the production method, all other interactions remain unaffected.

The Physical Model

The implementation is commonly enacted through the creation of two abstract classes these being the AbstractProduct and the AbstractFactory and then inherting from these are the concrete classes ConcreteProduct and ConcreteFactory The reason for these two layers is that the abstract classes can be used as the interaction much like an interface, while the concrete classes are the implementation of the production method, opening up the possibility for as many concrete classes as are needed, this will also allow endless possibility for the aforementioned modifications that are often ongoing throughout development and post development of a project.

References

Purdy, D. (2002). Exploring the Factory Design Pattern. [online] Msdn.microsoft.com. Available at: https://msdn.microsoft.com/en-us/library/ee817667.aspx [Accessed 5 Mar. 2018].

Banksy Patrol

Banksy Patrol is a game about avoiding the authority, to upset the status quo through street art.

Check out the game here!

We had to do a video Pitch, Here is mine.

Art

I used a lot of Banksy’s work in this project, I lay no claim to any of their work. But I also made a bunch of custom art assets for this project as well, using my personal style;

I can create these assets rather quickly, as I find a silhouette that I like as a base, use Adobe Photo-shops warp tools to adjust it to my needs. Then I have two workflows depending on if the asset is for a grayscale finish or a colour finish.

The former being start with the silhouette in black, and use a soft edged brush on 1%-8% fill depending on the size and focus of the area being worked on, and I paint in the light, with #fff for the highlights, and #000 for the shadows, this gives a very high contrast, glossy, faked detail look, where they can pass for high detail assets, but they take relatively little time to produce. The quality scales well with time spent. For quick colour, you can simply use Photoshop’s colour overlay tools to add a single colour, Like I have done with the spraycan as seen above, or spot colours with masked colour overlay, this method is quick but returns a limited quality.

The later of the two workflows is a longer process for a colour version. Start with a picked colour pallet, keep the colour pallet locked and on a separate layer to avoid misrepresenting the colours through paint overs and smudges(what I call miss-click’s when painting in Photoshop) you want this layer at the top of the stack as well. You also want a #808080 or 50% grey fill of the silhouette at the bottom of the layer stack, you want to lock this layer and never touch it again. Once you are set up you want to work on the project in a number LOD(level of detail) passes. Start by block colouring the areas of the silhouette, I find using a solid colour fill and a mask makes this step easier, as you can quickly change a colours fill, without messing up the mask. Now comes the first lighting pass, you want to make a copy of the silhouette layer and put that layer above the block colours, but below the colour pallet layer. The layers lighting mode should be switched to “Overlay” this will effectively make it completely transparent, but that is what we want, next same as the grayscale workflow we want a soft edged brush on 1%-8% fill depending on the size and focus of the area being worked on, but as you work change the layers Opacity to see the colour come through, this is useful to adjust how aggressive the lighting is, I like to start out with the Opacity on 65%, but be sure to adjust it as you work, moving it up and down to help you keep perspective of the colour to light mixture. Now this is only LOD 1 so don’t worry too much on how realistic the lighting is, this is just to help you confirm the block colour on the silhouettes. Once you are happy, you want to hide top colour pallet layer and make a flat layer of everything so far, the Photoshop hotkey for this is “shift+ctrl+alt+E” then you want to continue adding detail in steps, but instead of using black and white, you want to spread the light and dark areas of colour around while using them to add detail, for this use the eye dropper, keep the fill rate very low, and work slowly, every time you are happy with a “step”, continue working on another layer up as to not ruin past work as painting with dynamic grabbed colour is destructive (cannot be reverted past the undo limit) method. Keep working and adding layers until you are happy or hit the deadline. I bet it’ll be the deadline. Happy painting!

Notes:

Thanks Sey for all the help and motivation on this project.

I’ll add pictures to better show how I do my art, later if I remember.

This project did not turn out as successful as I would have liked, and I plan on revisiting my coverage of this project on this blog when I feel I have the motivation, and time to do so. (but I make no promises)