Friday, August 19, 2016

A Look Back: Splinter Cell Blacklist's Benghazi Level


I'm feeling nostalgic. Tomorrow will mark 3 years since I shipped my first game with the amazing team at Ubisoft Toronto, Splinter Cell Blacklist. To this day, it is still my favorite project and the one I remember the most fondly out of all those I've worked on so far. I grew immensely as both an artist and a developer on this project. In many ways, it was the launching pad for my career and I owe a lot to both this project and Ubisoft Toronto for how much I was trusted with despite it being my first shipped game.

That said, I thought it would be fun to look back on the level that I worked on for the majority of production, the 'Safehouse' level set in Benghazi, Libya. Given that this was the first proper gameplay level after the initial tutorial level, we took the somewhat daunting task of making this level head on. Being a 3D Modeler at the time, I worked on this level closely with my Level Artist, Jon Boujos, our Level Designer, Nick King, our Modeler/Texture Artist, Tim Bergholz and our Texture Artist, Pierre Thériault.


Loading blog post...it's a long one, you've been warned.

Tons of little facts, anecdotes and little takeaways come to mind when I look back on the development of this map, but here's 10 that I thought would be fun to share for technical reasons, for fun, for little takeways, etc.:

--------------------------------------------------------------------------------------------------------------------------

If you need a refresher of the map (or a first time look!), here's a Perfectionist playthrough video.

#1_Barely Any LODs Used In Level


One thing you might have noticed playing through the level is that we barely had any assets with LODs in the level. If I recall correctly, virtually the only assets that had LODs were the great palm tree assets Tim Bergholz had made. The LEAD Engine (a heavily modified Unreal Engine 2.5), had a pretty robust occlusion system that handled 90% of our culling through hand-made occlusion meshes that lived in an invisible layer. The last 10% of assets missed by occlusion had their kill distances set by hand by both Jon Boujos and I as a fail-safe.

Due to the relatively tight structure and design initially laid out by both Nick & Jon combined with our tight culling, this enabled us to really use up the memory afforded from not having LODs to push a lot more props and clutter on-screen compared to other levels all while still running at a solid 30fps.

That said, were I to take another stab at the map today, one thing I wish we could have focused on more is push a lot more vistas throughout the map. We only revealed a bit of a vista at very key points due to the linear structure of the level, but in hindsight, we could have broken free from that more and make the level feel much larger than it actually was.


#2_Play Your Game's Other Content: A Case of Flashing Lights


Throughout Safehouse's production, I made a point to play the map almost everyday to re-assess the previous day's changes, note any previously missed bugs, etc. (Yes, that means I had to hear Elias Toufexis as Kobin in cinematics everyday) I always had a running log of things to do from those playthroughs, and they were incredibly valuable. One thing I had the chance to do towards the end of production is start going through a lot of the Co-Op maps made by our partners at Ubisoft Shanghai, as we were helping them bug fix gameplay issues to make the maps as smooth as possible for cover, Stealth, AI, etc. It was incredibly eye-opening going through their maps. I quickly realized, there that were so many little tricks and neat little things they were doing in their maps, whether it be lighting, smart optimization techniques, etc. that we didn't really do or pick up on in Singleplayer (and we were running out of time to implement new things). One thing I managed to ninja into our Benghazi map with the help of our trust Lighting team, VFX team & Sound team was selling the fact that the AI's truck was running and waiting for them to come back:

Don't you just want to cover on this truck?

I wish I could take credit for the idea, but as you might have guessed, it was a little thing I picked up from one of Shanghai's Embassy Co-Op maps. There was a garage in one of the maps with some running vehicles with their emergency lights flashing and it dawned on me...'Holy s***, why aren't we using this for our cover tutorial truck?!' (our truck originally had everything off). After a quick afternoon of running around and working with Lighting/VFX/Sound, we managed to get the implementation you see above in-game. In one fell swoop, all thanks to seeing a similar implementation in our game's Co-Op maps, we managed to lead the player to better reinforce our cover-to-cover mechanic in this tutorial section, sell the story that the mercenaries were keeping their truck running and loading it up and give some nice visual contrast to this heavily shadowed alleyway.

For me, this specific example really changed the way I've approached development for these increasingly large projects we work on with Singleplayer, Co-Op and/or Multiplayer. Next time, do yourself & other mode's team a favor...play each other's content earlier (and periodically) in development! Feed off each other's differing creativity and ideas. 


#3_Yes, You Can (get your map to 30FPS, 10 mins before content lock)


Confession time. We almost shipped a section of our map running at ~25FPS on PS3. The exterior of the Police Compound near the end of our map was our last remaining big gameplay sandbox section running under performance. It was always eating me up inside that we still had one this one section left despite all the optimizations we did. Time was running out. I was the last person on our map and, while bug-fixing something in another Singleplayer map that day, I spotted a texture. A texture using a simple shader that was very similar to the expensive vertex-blended textures we were using in our under-performing area. With a bit less than an hour to spare before Art Content Lock, I made the very last minute decision to swap out the shader we were using on our street in that area for the shader of the texture from the other map. Visually, you could barely tell the difference. I built and launched the map on PS3, holding my breath. I get to the Compound area of the map. The whole area was now running at 30FPS on PS3. I can't tell you how much that of a relief that was checking that change in 10 minutes before Content Lock. So yeah, yes you can?

Our heaviest and largest section of the map


#4_How Far We Go To Save Memory


Ah, the days of 512mb of memory from last generation. When we say that we try to squeeze every last drop of the consoles, it's never a joke. Self-explanatory image taken from my notebook at the time (love hanging on to them!):

Every KB counted...

Luckily, despite having to strip down the vert count of a lot of the assets to reduce overall memory for a given section (we literally combed through every asset to get savings), I didn't have to sacrifice much visual quality at all. Through these asset optimizations, I learned in a big way how not to be wasteful and how much proper Smoothing Groups/UVs/Material Splits go a long way to saving vertex count and mesh memory. So, even if we have 8GB of memory now, it's great to be mindful of things like that and squeeze even more on-screen!

#5_Working in Passes: The Case of the Tri-Rotor


For games with multiple playstyles, gadgets and such, people often wonder how is it we go about supporting *all the things*. For me, through Splinter Cell's development, working in multiple passes was definitely key. For example, with the Tri-Rotor whose metrics got finalized a bit later in development, there was no choice but to do a big pass on the map once those metrics came in. We had to find cool and relatively natural areas to punch holes through to support a Tri-Rotor-sized vent. It almost became a fun little puzzle for each area to see which creative ways we could use to support this particular gadget. Often it even snowballed and the new opening became a great one to throw in other gadgets. For example, this backdoor leading to the Safehouse's laundry room, notice the open window at the top:

The late addition of the open window at the top became a great entry-point for the Tri-Rotor...and throwables!

The sad part is that, in all likeliness, most players probably didn't even have the Tri-Rotor unlocked at this level (though you definitely have enough money to buy it). That said, for more open-ended sandbox games, I think that's just something you have to live with, players can't and won't see everything you've worked on. For me, even if there's just 1% of players who ended up finding our little Tri-Rotor entries and felt smart and creative doing so? That's worth it.

#6_Same Structural Mesh, Different Set-Dressing


One sneaky little bit of re-use we ended up doing in the map is between two apartment complexes you go through in the map at opposite ends of each other. One apartment complex you end up going through a little later in the map ended being finished before the first one. When came time to finish the first one at the beginning of the map, I was able to re-use two entire apartment sets  almost wholesale with just some set dressing changes between the two to accommodate little bits of story. This ended up being a godsend for the 1st apartment as we were knee deep trying to wrap up that section of the map for our very first press demo of the game, which our map was apart of.

The apartment later in the map
The apartment earlier in the map

One little caveat of re-using this same mesh was that it physically didn't actually fit in the 1st apartment building (woops). The interior and exterior didn't quite line up. In reality, if both the exterior and the interior of the apartment complex were loaded in the same time, you'd be seeing the walls of the interior protrude outside. Given how our loading was set-up between sub-maps, that was luckily never the case, the exterior and interior of the apartment were never loaded together so we were able to get away with the slightly hacky re-use!


#7_Cut, Copy?


Surprisingly, when I look back, not much of our map actually got cut. A lot of it came down to the great initial layout Nick & Jon established, it was a pretty solid foundation upon which to build the map. There was only one section/sequence that ended up being cut down and that's the intro of the map. It was originally supposed to be an elaborate market sequence, but it ended up being condensed down to the one we shipped with.The original plan for it ended up being way too long and for it to reach the quality needed we would have had to compromise quality and time for the rest of the map which had meatier gameplay. We ended up conserving the essence of that whole sequence and boiled it down to what shipped:

Notice Navid Khavari on the left there

The intro of the map ended up being much better for it and got you to the action and gameplay faster. When we were brought into a meeting to announce that the section was being cut down, it was almost a relief for us to be honest. As a map team, we were feeling that the sequence was long for nothing for a while and were glad to we could focus better on the rest of the map.


#8_Light & Shadow


We knew that working on this map was going to be an uphill battle. We knew that Splinter Cell purists would want to hang us...a Splinter Cell map in daytime?! We were conscious of it all the time and it's something we honestly took to heart as a map team. A lot of onus was put on us and the lighters to come up with interesting gameplay and lighting setups to support Stealth and Panther playstyles, whether in daylight or inside. It actually was a fun challenge to come up with creative ways to create natural pools of shadows for Sam to roam in...flapping cloth outside, a turned on TV inside casting shadows, etc. As you can see from most of the screenshots I've posted of the map (and more can be seen on my site), despite being a daylight map, the map oozes with dark inky shadows whether we're inside or outside and that was fully intentional. We wanted to prove that we could do a daytime Splinter Cell map well, and to a degree, I think we succeeded (though I may be biased!).

Flapping cloth created great dynamic shadows Splinter Cell is known for

One interesting issue that came up from us loving to use flapping cloth in our exteriors was that we realized that Sam wasn't registering as in shadow or stealth when under one. Turns out that in that engine, for a shadow to be recognized by Sam's light meter on his back (which turns on when in shadow/hidden), whatever was being shadow-casted had to have collision. So, one pass that I ended up having to do throughout the map was add invisible blocks of collision roughly the size of the flapping cloths to have those cloth shadows register properly. So if you run through those clothed areas...notice how his light meter turns on and off properly! The little details.

#9_"Smart Polish"


Towards the end of development, Billy Matjiunis coined the term "smart polish". We were both the last two people on our respective maps, so we were debugging and closing the map for Goldmaster submission. Technically we were only supposed to be bug fixing and doing nothing else but...in between bug fixes, we were always sneakily fitting in as much polish as we could in our maps. Material tweaks here...a chamfered edge there...some more clutter here...we called it "smart polish", wherein we had to make doubly sure our ninja polish wasn't going to break anything or cause more bugs. Luckily, after having worked with that engine for so long at that point, we knew the right levers to pull.

One bit of sneaky gameplay polish I ended doing quite a bit of was making sure we supported our little friend the Tri-Rotor as much as possible (and not in the typical ways you're thinking). The vents were all well and implemented, but I wanted to make sure the Tri-Rotor could go through everything that seemed like he was big enough to go through. One particular section of the map had a lot of wood slat walkways with pretty sizable holes that we couldn't really pass through with the Tri-Rotor due to them having very broad Navigation Collision (which the Tri-Rotor tested against). We originally kept the collision fidelity pretty low there for memory purposes, but by the end, we were in a pretty good spot, so I ended up defining the collision much more to enable Tri-Rotor navigation but also having to add an additional block of collision to still mainting player cover against the railings (you couldn't cover cleanly on non-rectangular collision).

You can fly through all those railings!



#10_Easter Eggs!


We actually had a couple of easter eggs in the map, both planned and unplanned.

If you pay close attention to the picture frames and billboards in the map, you'll notice that you may recognize some of those people and names. The caricatures of us were lovingly rendered by my good friend Nacho Yagüe:

Did I ever mention I used to be a dictator?

Ever heard of Saint Nick King?

Have you been to Jon Boujos' shop?

One great little detail Nick King added was in this little sequence here where militia are raiding apartments. They never break through this specific door pictured, but if you look under it with your Snake Cam once the militia neutralized, you'll notice a scared civilian cowering in their apartment:


And hmmm, somehow, this Polycount logo made it in:

You had to have the most upgraded thermal goggles to see this.


--------------------------------------------------------------------------------------------------------------------------

Whew. That was a long one (sorry!). I hope that, despite the 10 points being all over the spectrum, this was useful and/or fun to read through! It certainly was fun for me to remember a lot of these anecdotes and tidbits. If you ever have any questions, you can hit me up on Twitter @jobyek as usual!

And on that note, here's to celebrating 3 years since ship with the Splinter Cell Blacklist team! That production was a hell of a ride and I'm still incredibly proud of what we've accomplished!

Thursday, November 19, 2015

[WIP] From Puke-worthy to Rock?

Still plugging away at practicing my Zbrush sculpting in my free time when I manage to somehow rip myself off of playing Fallout 4/Star Wars Battlefront!

At work today, Darren Horrocks was nice enough to show me some of his neat little tips & tricks he uses when he approaches rock sculpting, some of the main ones:

  • Define the main large shapes by using the handy 'Clip Curve' brush
  • Breaking up any straight lines and adding a bit of a more organic touch with the 'Crumple' brush + cleaning up a bit after with the 'Trim Smooth Border'
  • Adding a bit of rocky texture by adding Noise through the Noisemaker tool under the Surface tab
  • And to top it all off, revealing that noise selectively either by Masking by Noise + sculpting over it OR creating a Morph Target before applying the noise and masking it the noise once applied with the 'Morph' brush

Here's a little (and embarrassing) look from the very first night I got back to sculpting to where I am after tonight's iteration on the same rock (with proper ref this time around):

Forgive me again Zbrush gods.

Still a ways to go, but feels like I'm getting better again. Forgot how much I enjoyed sculpting!

Tuesday, October 6, 2015

[WIP] Getting Back Into Sculpting


One drawback of being a Level Artist in a larger team and focusing more-so on the big picture and not as much the nitty-gritty details anymore (as you often have Modelers/Environment Artists under you that you're delegating that to), is that some skills kind of fall by the wayside a bit...namely high-end sculpting. And that's something I'm working on changing.

I'm slowly getting back to it over the last couple of weeks in my free time, and finally got a result I didn't want to puke on tonight. Been sculpting while having Clinton Crumpler's excellent Digital Tutors' tutorial playing in the background.

Here were tonight's results, no ref was being used, just getting used to all the different brushes again:

Forgive me Zbrush gods.

Will slowly skill back up! Been a while. I mostly did sculpting in Mudbox before too, but making a point to learn Zbrush better now, sculpting just feels so much better in it.

Tuesday, September 22, 2015

[Micro-Tut] Applying Modular Techniques to Wheels

So, for my next blog post, I wanted to totally switch gears from talking about high-level art principles, and drill down to a little "micro-tutorial" on...wheels. Like I said in my first post, I really want this blog to cover a whole range of topics: articles, analyses, tutorials, WIPs, etc.

And here we go! Happy reading!

----------------------------------------------------------------------------------------

Why Wheels?


[tl;dr - If this post is looking too long for you to read right now, scroll to the bottom for a nice big recap image :)]

Wheels are arguably what makes or breaks a vehicle in game art. You could have the best looking vehicle body, but if the wheels suffer in quality, the whole vehicle does too inevitably. Case in point, I recall this one teaser screenshot Kojima released 4 years ago to tease The FOX Engine/MGSV:

Teaser image released by Kojima back in 2011 for The FOX Engine

You have this nicely detailed vehicle, then your eye scans down and see the sore spot of the wheels that are really flat, lacking any good shapes/volume and that are of a much lower quality and resolution than the vehicle itself. (To be fair, the vehicle might not have been final/ready to show and marketing might have taken it anyways, definitely something that happens sometimes.) 

All that to say, this little micro-tutorial will focus solely on creating high-quality & efficient wheels. There are tons of tutorials that focus on full vehicles, so I figured I'll focus one this one part which can ultimately help elevate an already great vehicle.

Surprisingly, after having looked around online, I haven't seen the technique I'll be outlining below mentioned at all. It's definitely a technique that's used more for modular structural environment art to get the best resolution and quality (see how Simon Fuchs uses this with his small environment), but not one I've seen applied too much to something as small as wheels. It's a nice technique that I learned from my good friend and super talented colleague Tim Bergholz (Check out his upcoming gumroad tutorial!) during our time working together on the Benghazi map in Splinter Cell: Blacklist.

Through the tutorial, I'll be going over the creation of wheels similar to ones that were used in my portfolio pieces from Splinter Cell: Blacklist:



0. Symmetry & Quartering Are Your Friend


The over-arching technique that guides this whole tutorial to achieve the best resolution and quality out of your wheel is that of symmetry and quartering. By not fully uniquely unwrapping your wheel tread and sides and only being able to focus on a quarter of your wheel, you can maximize its resolution (by maximizing the quarter shell size to what you would use for a unique unwrap all while leaving room for other elements) and make it match if not exceed the resolution of the vehicle body as well as speed up texturing time (although it comes with its own challenges to make sure details don't tile badly). Knowing this, you need to fully keep this in mind as you flesh out the design for your wheel/treads/rims/etc.

Click on image to see full-size

1. Creating Treads


I've personally seen a few tutorials of creating high-poly treads like this, but here's a quick overview framed within the symmetry/quartering technique. The most important thing is to make sure your design tiles well so that the symmetry/quartering works flawlessly:


Click on image for full-size

2. Creating Hubcaps


Again, nothing out of the ordinary for creating the hubcaps. Where it diverges from most methods is in the quartering/symmetry of it to get the best size and resolution within your UV sheet. Given we're using this technique here, you just need to make sure your design quarters well and always pay attention your spacing is cleanly fitting within a 360 degree rotation. Here's an overview of hubcaps framed within the technique:

Click on image for full-size


3. Closing thoughts


And there it is. Doing this technique is definitely a bit more involved and takes some light planning. However, for the gains in quality and resolution you get for the vehicle as whole through the wheel, I think it's worth doing. Symmetry and quartering shouldn't just be used for this, it can also obviously be used for any type of repeating parts of a model (e.g. either side of a vehicle, concrete dividers, tank treads, etc.) which you don't want to double up work on and save precious UV space, so long as you break it up cleverly in the texture or with other unique middle pieces in the model.

As always, I'm always open to critique & feedback to the blog post. All I've said can most definitely be updated if anyone brings up any issues or things worth clarifying. Just give me a shout on Twitter @jobyek or in the comments!

One last thing...here's a nice big high-resolution recap page of all this:

Click on image for full-size

----------------------------------------------------------------------------------------

Links used in article:


Simon Fuchs' use of quartering in an environment: http://www.simonfuchs.net/folio/project06.htm
Tim Bergholz's Portfolio: http://www.timbergholz.com/
Tim Bergholz's upcoming Gumroad tutorial: https://gumroad.com/timb

Saturday, August 29, 2015

Welcome + My Guiding Art Principles

Welcome to my game art blog, 'Creating Triangle Soup'! (Bonus points to whoever catches that name reference.)  Ever since I overhauled my portfolio website a couple of years ago, I've always been meaning to eventually add a blog component to it. I've only ever had a couple of articles/posts in mind, but recently, there was a sudden influx of post ideas which prompted me to *finally* start this up. Here we are.

Expect to see posts about a range of topics, from posts about game art, the industry, to posts with WIPs of studies or future art projects that I've been kicking around in my head. I'll try to keep this as active and updated as possible, if not, scream at me on Twitter @jobyek.

Without further ado...onto my first post!

--------------------------------------------------------------------------------------------------------------------------

My Guiding Art Principles


I recently got asked by a friend how is it I approached creating props and environments when I was talking about what I do for a living. I actually really enjoyed thinking about my approach and breaking it down for said friend, and thought it would be worth sharing. I'd love to hear about how different or how similar people's approaches are in the comments!

Throughout the post I'll focus on these two images that you can find on my portfolio:


From Modeler to Level Artist


I started out at Ubisoft Toronto as a Modeler nearly 4 ½ years ago and worked my way up to my current position of Senior/Technical Level Artist. Boy am I glad I started out as Modeler and not as a Level Artist. After finally breaking into the industry and seeing just how much a Level Artist is responsible for, there was no way in hell I could have done that straight out of school like I thought.

As a Modeler at Ubisoft, you're typically responsible for modeling and texturing all your own environmental props under the guidance of a Level Artist (if it's a more linear Singleplayer game) or a Lead Artist managing a pool of artists (if it's more of an Open World game). To start out in the industry, that's great. It let's you really focus on the details, the nitty gritty art/tech details and start to have you worry about gameplay constraints (cover, vaulting, etc.) and really start developing your eye for all of that. And from there, if you so choose, you can grow into doing level art given the chance. It's something I slightly miss, but what I realized transitioning from Modeler to Level Artist, is that a lot of the same principles apply, just on a different scale.

Some of the core principles that I subscribed to whenever I start a prop, in no particular order:

  • Context - From a core question like: Where is this prop being used? You can extrapolate many other questions: How is a person using it (where are the hand and feet going)? What weather or natural elements are affecting it? Etc. All of those inform my decisions in both modeling and texturing and not to mention reference gathering. I never add any detail just for the sake of detail. Everything should have a purpose or a reason it's there, however small the reasoning is. 
  • Imperfection - This is a tenant I've carried with me ever since our very first high-level Art Direction meeting with Scott Lee. One of the art pillars of Splinter Cell: Blacklist was Imperfection. That's something that applies whether you're making something for a war-torn map, an abandoned warehouse or a perfectly pristine government facility or private estate. Nothing in life is ever really perfect. There's always some sort of imperfection whether it be in its placement, its shape, its material quality (this is where you get a lot of your imperfections for 'clean' environments), etc.
  • Gameplay - Does this prop need to be gameplay friendly? Does the player need to take cover behind it? Can the player vault over it? Is it purely visual dressing and other props will stack near it to form cover instead? A lot of those questions can drastically change the design and approach of whatever you're making, so it's good to answer those questions early.

How I applied this practically on the scooter model I made for our Benghazi map in Splinter Cell:


The Big Picture


As much as I miss doing that hyper-detailed work of a Modeler, where I get the most joy out of my work is building up full environments as a Level Artist. At the end of the day, players won't notice your little super detailed prop in the corner (exception: Weapon and Vehicle Artists!), what they'll notice is the Big Picture, the whole environment. That's what gives chills and creates emotions for players when exploring a game's world. Not sure about everyone else, but whenever I come across a beautifully realized expansive vista in a game level (even better when you get to play in it!),  I usually, without fail, get those 'good' spine-tingling chills. Halo 4 comes to mind with their beautifully-paced vistas and reveals in their Singleplayer levels (looking forward to Halo 5's!).

A (playable!) vista reveal that I was particularly proud of in my Shangri-La map in Far Cry 4.

As I mentioned earlier, a lot of those principles I applied to my props, they can be applied to full environments and locations, just on a much more bigger scale.

For the principles, they stay the same, but the questions you ask yourself change, as all other departments' work converges in the level:

  • Context - What is the narrative of the world/location your level is set in? What is the gameplay or story beat that needs to be hit in this area? How is VFX & Lighting coming into play? How are all those factors affecting your environment? Etc. The more questions you ask yourself, the more you can ground your environment by directly answering those with your art's layout.
  • Imperfection - Again, same principle I've been carrying with me ever since Splinter Cell. Although, instead of applying it on the macro level on a prop, you're blowing that up to the scale of a whole level. Imperfection can apply to the placement from anything small in the level (rocks, trash, etc.) all the way to the large (architecture, entire sections of level, etc.). Things are rarely ever perfectly straight or perfectly on-grid (which can cause a lot of back and forth with Level Design depending on how rigid your gameplay features are).
  • Gameplay - Design and gameplay naturally plays an ever bigger role as you're working on a full level. You have to be in total sync with your Level Designer to make sure you preserve (and even add to!) their gameplay intentions all while making everything look pretty. At the end of the day, we're game artists, not just Artists. You could have the most beautiful level, but if the gameplay is s***, it's a bad level and it won't be memorable. Some things you naturally always have to think about: How is the player flowing through these spaces? How does it feel to flow through---Natural? Kind of awkward? Can we get a nice reveal here through layout?Where are his natural cover points? Where can he vault? What can he climb? All things you need to constantly worry about and feel out by constantly playing your level. Something I make a point to do almost everyday first thing in the morning if I'm working on a map.

How I applied this practically in this shot from the Shangri-La level in Far Cry 4 (which happened to be the intro shot of our hands-on Gamescom 2014 demo):



And on that note, that pretty much concludes my very first blog post. Hopefully the first of many. Sorry for the overly 'wordiness' of it all (there's some pictures!), I tend to write too much. Will need to learn how to be more succinct in my writing!

I'd love to hear from other artists in the comments, on Twitter @jobyek, whatever! How similar or different is your approach to making a prop or an environment? Always good to get different perspectives. If you have any questions too, feel free.


Cheers,
Jobye

Monday, August 24, 2015

Coming Soon.

Under Construction...soon to have articles, studies/project WIPs, etc. feelings?! What have you!