A Breakdown of "Captain's Quarters"

Making Of / 29 January 2024

Introduction

This blog post will serve as a retrospective and accounting of my creation of the piece "Captain's Quarters". I would like to thank my beautiful and patient wife, Roslyn, for her invaluable help, insight, and support. I would also like to thank my good friends Pearce Pachuta, Harrison Pachuta, Rachel Strange, Tom Lerner, Chloe Tibets, Will Engels, Michael Svymbersky, as well as many others for their help, critique, patience and kindness. You are all wonderful.

With that out of the way, a short backstory of the project. Sometime in mid-2022 I had a conversation with Mike, an artist friend of mine, who suggested I work on a new portfolio piece. One that would really showcase the upper limits of my artistic skills, rather than just my capacity for production work. I took this advice to heart and began the process of making a piece that would push my limits, both artistically and mentally. The result was around a year and a half of on-and-off work and a product of which I am supremely proud of.

Concept and Planning

I have always found early 20th century interior design to be simply stunning in its elegance, luxury, and material. This became my first criteria. Secondly, I wanted to showcase my capacity for creating a complete interior environment, rather than individual models like my previous work. With these in hand, I scoured the internet searching for suitable concept art from which to draw on. Eventually, I stumbled upon the DeviantArt of one Vladislav Voskresensky

This wonderful piece of art simply spoke to me. Link to original. The way the artist portrayed the space, composition and materials made this stand out to me amongst all the rest. Picking concept art is no small deal. To do a proper job on an environment like this requires real effort, and I was fully aware at the time that I would have to stare at this piece for potentially hundreds of hours. Given the opportunity, I make sure to pick something I like. Or at least something I'm willing to be with for an extremely long time. To me, to do a concept justice, one must strive to understand it equally if not more so than the original artist. This was my intent in approaching the original by Voskresensky, though I claim no such feat.

Having selected my concept, I set about planning my work. I tend to be rather disorganized in my day to day life, but fastidious as can be when it comes to my art. I have worked on enough projects where poor planning led to dozens of extra hours of work down the road, so I ensured that I knew exactly what I needed as early as possible. Establishing the scope of work prior to beginning production is key. Things will change, they always do, but at least you have a plan.

I began with a rough plan for the project. Nothing particularly fancy, just a Photoshop file where I listed out which props I would need to build, what materials I would need, and what my overall pipeline would be. Its not like I wouldn't know what I needed to do, but I find having things written out, even if they're obvious, is of great help to me. And, considering I created this image before I laid the first vert down, I stuck to it surprisingly well. A few things changed, and a few things went out of order, but overall the planning was worthwhile. I would simply cross things off the various lists with a brush as I got them done. That really helped me stay on track and keep me motivated, to see the things that I had already accomplished. To give a sense of timeline, this Photoshop file was created on June ‎2, ‎2022.

Blockout

Once planning was completed, I was eager to sink my teeth into Unreal Engine 5, which I had selected as my composition and rendering engine for the project. A further discussion of this decision and its ramifications will be found later. I started production proper by blocking out a crude scene in UE5. My plan was to start a blockout in Unreal, then replace each part with a complete model as I finished them, prior to texturing. I also decided to separate the modeling and texturing steps so that I wouldn't be handicapped by sloppy early texture work. Get all the models done, then get all the textures done. Plan for cohesion. It sort of worked out like that.

This shot shows the earliest work that was done on the project, which I made using Unreal primitives as well as the rudimentary modeling tools it ships with. I also used some stock materials just to give me a crude sense of the overall look. This process only took around a day or so, and frankly I spent about as much time learning the editor as I did actually creating the damn thing. I was, however, reasonably pleased with the result, so I pushed on. I finished the blockout on June ‎13, ‎2022.

Modeling

I pulled my Unreal blockout straight into Blender to use as a scale base for the proper modeling work. There is frankly not a lot to say about the modeling work. Modeling in Blender is as natural as breathing to me, and the first pass at models was mostly just to refine the major shapes so I could have a nicer environment to place the major props in.

Not a lot to look at, but it never is. The wall parts were trivial, but the glass and metal framing was a bit more tricky. In the end, I just placed edge loops on walls where I wanted the frame, duplicated and separated them, extruded them, then added a solidify and bevel modifier to them. Nothing crazy, and it worked like a charm. From there, I completed the desk.

And that was about it. For 2022 at least. And a solid portion of 2023. I moved 2000 miles away to Alaska, got married, and got laid off from my job. In order of chronology, not importance. This damnable project just sat on my hard drive, taunting me. By the time my life finally settled down, Unreal 5 was now Unreal 5.3, and I was ready to rock.

The rest of modeling went more or less smoothly. I ended up deviating from the original concept art by not including the desktop monitor, and changing the design of the wall monitors. The prior was too low fidelity in the concept to get a firm grasp on it. I tried multiple times to translate it into a model, but nothing I made worked well in 3D. It was a similar story for the inset wall monitor. The design as written ended up being a bit of a problem for me. Since I was under no obligation to "make it work", I instead took a bit of creative liberty and based the final monitor off of some appropriately anachronistic old-timey TV sets. A bit of a compromise, to be sure, but one I was willing to make for the sake of continuing the project.

Despite what I said earlier about modeling being a simple process, I did make one large improvement in my modeling workflow, right near the end of the modeling work. I watched this amazing tutorial by Alex Medina and thought to apply it to the next model I worked on, which happened to be the radio model. I love vintage radios, and the one I had in mind was perfectly suited to his "basemodel with booleans and subdivisions to highpoly to lowpoly" approach. I had used somewhat similar techniques in the past to quickly generate low poly models from a basemesh, but his tutorial really helped me refine my workflow.

By November of 2023, I estimate that 90% of the modeling work was done. This is around the point when I really began working on the project in earnest. I estimate that around 70% of total project work was completed between early November 2023 and the end of January 2024. 

Final wireframe.

Texturing

My initial plan was perhaps a bit too ambitious in terms of using tiling materials and trims. In the end, nearly every asset was created from scratch, though I did create around half a dozen Substance Painter smart materials that I shared across assets. In fact, the very first texture work I did was for two tiling materials in Substance Designer that came in extremely handy. The first is a nice brassy material which ended up featuring prominently in the scene. The only actual model that uses it directly as a texture is the wall framing, for the rest I exported an SBSAR file and used it as a base material in Painter.

The second material is a wood flooring material. Its used as a base material for the floor mesh and part of the shelves.

After creating these materials, it was a pretty simple process of going through the props one by one and texturing them. Generally speaking, I didn't do anything fancy or unusual to them. My goal with this project was not necessarily to push my texturing skills. Besides, one must balance the desire for perfection with actually completing a project. I spent a solid month between mid November and mid December with texturing for the various props and walls.

The one exception to this "production mindset" was with the textures for the radio. As mentioned earlier, I tried some new modeling techniques while creating the mesh, which resulted in the model taking many extra hours of work and being of particularly high quality. It felt a shame to just give this splendid model a cursory texturing pass, so I dedicated a few extra hours to make it really shine. If this project has a hero asset, this is it.

One mesh that did not get nearly the amount of attention in terms of textures was the chair model. I had struggled a bit with creating the mesh, and wasn't particularly satisfied with it's quality. I was, however, unwilling to re-build the thing from scratch. In my frustration, I gave it only the barest of textures and called it a day. In a moment I should have seen coming, I asked a non-artist friend about his thoughts on the test renders I did, and the very first thing he said was "Those chairs look incredibly uncomfortable. Why not make them more cushion-y?" This feedback was the impetus to give the existing textures some much needed love.

I think the results speak for themselves.

The final texture set worth calling out is the books. I'm really fond of the texture work on these. Anything with text also gives me a nice chance to give the scene some character; some personal touches.

Other odd notes: The inspiration for the wall texture comes from reference photos of the Hindenburg. The internal walls were constructed out of thin foam board with fabric layering the outside (including for the smoking room - yes, the hydrogen-filled Hindenburg had a smoking room, look it up). Also, the rug near the desk is just a heavily normal mapped texture baked into the floor, no extra mesh was used.

During the process of texturing, I had been making a point to import each newly textured asset into Unreal to position it and check that the materials looked good in the engine. After this was finished, I was in the final stretch. Texturing was more or less finished by early January, 2024.

Composition & Lighting

Once my attention was fully turned to composing the scene in Unreal, things got a bit hairy, to say the least. My intention was to have volumetric clouds outside the windows. I got this working with relative ease, it was a simple matter of plugging noise into the extinction channel of a volumetric material while lerping the same texture between two gray colors with a light and dark luminance value and plugging that into the diffuse. A grand total of around 5 nodes. It looked really nice as well, and can actually still be seen in the work in progress slideshow on the project's portfolio page. However, I removed these from the final product. The unfortunate reality is that as incredible as Lumen is, it really did not want to properly behave with my cloud volumes. The issue in particular that I faced was with shadows flickering/smearing when an opaque object moved past a volume. This was particularly noticeable where the windows touched the walls. The issue in question can be seen here.


This caused me 10 hours of pain and suffering. 

So I compromised. I would rather have a somewhat bland looking external environment over intense shadow flickering in my final render. I am still unsure of what causes this or if there is a fix. There is likely a single console command or hidden check box that would fix this, however I was unable to find it. I also tried using a Niagra system for airborne dust particulate, but the Unreal editor continually crashed while I was editing the system, so this was scrapped as well.

Outside of these annoyances, the majority of the work for the lighting consisted of tweaking, constant tweaking. Raising the brightness of this light, lowering the emission multiplier here, adjusting the post processing exposure to compensate, and so on. My final set-up consisted of:

  • 1 directional light
  • 3 hanging lamps with emission
  • 1 point light for the desk lamp
  • SkyLight, SkyAtmosphere and ExponentialHeightFog objects
  • 1 rectangular light to illuminate the wall-mounted gun
  • 1 low light rectangular light with shadow casting disabled placed at the window to make lumen render more reliably

It was not overly complex, and in the end I managed to achieve a rather pleasant looking overcast vibe, complete with raindrops on the windows.

Rendering

The rendering process was mercifully straightforward. I performed a few dry runs of rendering the video fly-through while adjusting various settings, including the Temporal AA passes, Lumen Scene Lighting Quality, Lumen Scene Detail, and Lumen Final Gather Quality. I could perceive no difference between 128 and 64 TAA samples, so I went with the latter. Scene Lighting Quality and Scene Detail seemed to have little impact when set over their default maximum values, so I went with that (2.0 and 4.0 respectively). Final Gather Quality had the largest impact, both on visual fidelity and render time per frame. My PC has a 10700k, 8GB 3070, 32 GB of RAM, and I was rendering everything locally, so performance was absolutely an important factor. Setting Final Gather Quality to 10 was significantly better than the default maximum of 2.0, but dramatically increased render time. After some testing, there seemed to be a breakpoint between 5.0 and 6.0, where the latter took nearly as long as setting the value to 10, but 5.0 was over twice as fast with relatively marginal quality loss. These were the final values used for the render, though there does still exist some flickering due to Lumen's GI system.

I attempted to switch my scene over to the pathtracing renderer with poor results. Not only was it prohibitively expensive to render, but the pathtracer didn't want to play nice with the existing SkyAtmosphere and ExponentialHeightFog settings, and I was, frankly, in no mood to crowbar it.

Final rendering was accomplished using a keyframed camera, a sequence, and the Movie Render Queue on January 28, 2024.

Conclusion

I firmly believe that the last year and a half of work has been well worth it. There are few satisfactions in life better than giving the world the result of your hard work. I learned an incredible amount working on this project, the vast majority of it having to do with Unreal Engine. I won't say that I regret using Unreal due to the raw value of the experience, but I can't claim that it was perfect either. Late in the project I came to realize that essentially everything I was doing could be accomplished by staying in Blender and rendering with Cycles, a platform I am exceptionally more familiar with. I would have lost out on the learning opportunity, yes, but I would have saved myself roughly 60 to 70 hours of time. I consider it worth it, but it's important to be aware of that kind of tradeoff.

Beyond that, I am extremely satisfied with the final result. I always go into a project with a vision in my mind's eye of the end product, all the while knowing that that vision won't be revealed until the final hours of work. This by itself can make the entire experience of making art a rather grueling one. But an experience that is worth it.

If you've made it this far, congratulations, you now know what it's like to be a friend of mine asking how work is going. And thank you, for taking the time to read this. I find posting these blogs to be helpful for myself, which is why I write them, and I hope you found it informative, insightful, entertaining, or in some way positive. I'd like to reiterate my gratitude to all those named at the beginning for their support, and I hope you, dear reader, have a wonderful day.

- Thomas Vanek

Report

Development Blog - 11/13/2020

Work In Progress / 13 November 2020

Brief Update

Hello all,thank you for tuning in to my third development blog post. This post comes about a month after my last one which, I find, is a really good time period between updates. It gives me plenty of time to make progress as well as giving me miniature deadlines to keep. I’ll start as I did the last time with a brief update about my progress and then go into more detail later. In summary, since the last post I have fixed the visual issue where the player appeared to be squished, switched map editors and blocked out a rough level, added new features such as bullet impact decals and sound effects, and created a brand new weapon. That’s about as brief as it gets, so now i’ll just dive into it.

Early Progress

Immediately after my last post, I went back to work. The very first thing I did was fix the issue with the first person view model appearing “squished”. The configuration I am using to achieve the first person view uses one “main” camera and a “first person” camera. The main camera sees everything except for the models used in first person; the first person camera sees only those first person models. This includes the weapon models and is done to allow the field of view to be changed without warping and scaling the first person weapons and HUD. The view layers were configured incorrectly in such a way where the first person camera was not actually seeing the models which caused them to clip and warp. To my mild irritation, I fixed this the very next day after publishing the blog post. Regardless, you are able to see the changes now.

Next, I worked on adding sound and visual effects for the Mannlicher gun. I quickly composited some foley and found some gunshot sound effects online. I then decided that I needed some functionality for the gun past simply running animations. So, I programmed a bullet firing effect and a bullet impact effect. These were simple enough but required implementing quaternion rotations which I lacked prior experience with. The bullets work by spawning at the end of the barrel when the gun fires and are impelled in the direction matching the (quaternion) rotation of the barrel. When encountering a collision object, the bullet runs a simple script and decides what to do (such as deal damage or create a bullet hole on a wall) then destroys itself. When the bullet impacts a wall or other surface, it instantiates a decal projector that projects a simple bullet impact decal. I now need to add a timer that destroys the bullets and decals once they have existed for a set amount of time in order to ensure consistent performance or, find some other solution to prevent an infinite buildup of game objects. This was completed by the 20th of October as I began to turn my attention to level design.

Level Design

As I mentioned at the end of my last post, one of my immediate goals was to prototype a level. At that time I was using the Yumponics map editor which, while quality software, did not meet my needs. Shopping around for other options, I was suggested the software called ProBuilder. As it turns out, ProBuilder used to be a Unity Asset store asset until it was integrated into the Unity Packages, thus why I did not find it initially. Regardless, on the 29th of October I decided to switch my level editor to ProBuilder. I believe this to be one of the best decisions I have made during this project.

The advantage of ProBuilder is that it allows for the creation of custom level assets by giving the user tools to manipulate the geometry of models in-engine that can then be placed in a scene. Given my 3D modeling experience, this workflow is extremely intuitive and precisely what I was looking for. I desperately tried to avoid the potential process of creating a model in Blender, exporting it to Unity, only to then find out that the scale was wrong, or that it didn’t fit how I wanted and then being forced to repeat the entire process over again. What I needed was the ability and tools to crudely sketch out the level in-engine, allowing me to then refine that rough sketch with external tools.

Enthused with my new workflow, I dove right into planning out the rough design for the level which is broken into 3 parts titled sub-levels A, B and, C. By November 3rd, I had completed a rough blockout for sub-level A. 

I made sure to encapsulate all of the models made with ProBuilder into Unity Prefabs. Prefabs are essentially groups of objects that are meant to be instanced (copied) within a scene, meaning that all instances of a Prefab are identical copies of the original. For example, say I am using a pillar asset several times in a scene. Without using a Prefab, editing all of the pillar instances would require manually editing each copy with ProBuilder every time I wanted to update the same pillar. Instead, by placing the pillar model into a Prefab, each copy of the pillar will mirror the changes made to the original Prefab. As a whole, utilizing Prefabs and ProBuilder this way allows for far simpler asset management and is, so far, resulting in a very smooth production.

After much trial and error, I have been able to find a good approach to level design. I attempted to create a modular kit which did not work all that well. I tried the block approach with YuMe which was also unsuccessful. Now, I create the blocked out assets in-engine then export those to Blender and Substance Painter which makes for a very comfortable workflow. From a technical standpoint, this is great, simply because I found a tool that works. On a higher level, I now know the methods and techniques I will be using to bring this project to completion.

Winchester 1883 Prototype

After working for several days to create the level blockout, I was satisfied with my progress and wanted to turn my attention back to asset creation. I had actually begun work on a new weapon, the Winchester 1883 Prototype revolver, on the 22nd of October however, I only finished a simple blockout before switching my attention to level development. By the time that was done, I was rearing to jump back into modeling.

The whole process took about a week, starting on the 7th of November and rendering the final shots on the 12th (Cycles is rendering as I write this). This week included high and low poly creation, texturing and a small amount of animation work. I used RetopoFlow for the low poly models which might not have been the most efficient solution for this particular project but, I think the end result is perfectly adequate. After retopologizing, I imported the model into Substance Painter for texturing. I realized that my UV unwrapping was causing aliasing artifacts when I was baking mesh maps (due to misaligned UV islands and low quality Painter bake settings), so I edited my UV unwraps and increased the bake quality in Painter in order to make the best out of non-optimal circumstances. Properly fixing the issue would have required re-doing the bulk of the project however, the situation was ultimately salvageable without the need for a total redo. In the future, I will be focusing much more heavily on planning UV unwrapping from the beginning of the project in order to mitigate issues like these down the production line. 

As far as design goals go the reference used is a real gun, and was a prototype of a revolver produced by Winchester before their “gentleman’s agreement” with rival Colt. The real prototype’s frame is an unfinished steel material with many manufacturing marks still present, lending it a distinct look. The wood grip is of a very high quality finish contrasting the appearance of the metal. I sought to replicate both of these looks with the highest fidelity possible, as I found this contrasting effect to be the most appealing part of the design. 

Reference Image, courtesy revivaler.com/

However, a few changes had to be made from the original, such as the bracket holding the ejector rod. That aspect was, truthfully, a necessity born of poor planning. Early on, the underbarrel section was accidentally misaligned with the cylinder chambers so, later in the modeling process, the ejector could not line up with the chamber. To solve this, I decided to add a simple bracket to the barrel to hold the rod and ensure its proper alignment. I found this option superior to completely re-working the model, as it adds character and unique detail while still being faithful to the reference. I think the design holds up, but I found this detail worth noting.

Overall, I am quite pleased with this piece, even though it has its visible flaws. I was able to create this asset much faster than my prior gun and with a much higher level of quality. More images can be found on my portfolio page. I really enjoyed making it and I look forward to my next asset.

Direction

Now I would like to have a more meta-discussion. I was not exaggerating when I said that using the ProBuilder tools has been the best decision I’ve made so far. Being able to create a rough concept so quickly was a huge boon that allowed me to really start seeing what the final product will look like. It has given me immense motivation and confidence about the future of this project, and I hope that this blog post illustrates that motivation. I’ve been absolutely thrilled that I get to share this experience with everyone and I hope that in the next post you will see the continuation of this momentum.

Next Time On…

My goal for the next post is to have some basic textured props and level geometry that can be reused for the rest of the level. I will also ideally have at least sub-level B blocked out, and have implemented the inventory system (considering how I have two usable weapons in the game). I will also probably go into detail about the currently incomplete animation for the Winchester 1883 that I have big plans for. I also intend to utilize the taser model that I presented in my first post in order to have a third playable weapon (as it’s not currently in a playable state), with the fourth soon after, as my next gun is currently in the works. I think that should keep me busy for another month.

With that, I thank you from the bottom of my heart for taking the time to read this post. So much time and energy has been spent on this project and the support that everyone has shown means the world to me. I could not do this without all of you. Thank you, and I will see you in the next one.

Report

Development Blog - 10/10/2020

Work In Progress / 11 October 2020

Brief Update

Hello all, I'd like to start this dev blog off with a brief update on my last month or so of progress. If you're in a hurry, this first section will cover the basics of what I've been doing.

The most significant thing I've done is to model and animate a first person weapon model, the Mannlicher 1901, and integrate that into the game. The modeling process was smooth, but when it came time to rig and animate, I ran into a bit of trouble. It took a solid week of effort, but the rigging and animating finally got to a state where I deemed them acceptable for an alpha version of the game. I'll go into more details on my process for that later. I also spent a few days writing the code that controls the weapons and player inputs, so at the moment, it is possible to move, shoot and reload, however the functionality for actually firing, playing sounds and VFX are not implemented, only the animations currently play. The final area I've been working on is the level design. I continued to flesh out the interior wood kit that I presented in the last blog, it now contains several more parts that are fully textured. I have also started using the Yuponic Map Editor for Unity to block out the level. The intent is to prototype the level to facilitate the development of level kits. 


Mannlicher 1901

The past month's single largest accomplishment for has been the creation of the Mannlicher 1901 gun for use in the game. After working so much on the level kit, I needed to take a break from that and work on something else. I decided to make a fully realized weapon that could be implemented in the game. This meant it needed to be fully rigged and animated, something I was not at the time experienced or familiar with. It was also around this time that I committed to an exclusively first person model as opposed to a merged first and third person model. What this means is that the player will not technically have a body, only arms and a weapons. This decision simplifies the project greatly, at the cost of some immersion. It also means that I could create a weapon that could be used and animated in a first person perspective without worrying about creating full body animations.

Once I had decided to make a gun, I began searching for a design to use. The only other weapon made for the game so far was the taser (as seen in my last blog post), which has a rather fantastical and creative design, I decided to go for something more grounded and create a gun that already exists. I found the Mannlicher 1901 while flipping through the pages of my copy of "Guns of the World", and I simply adored the design. It has a very unique shape but it is still quite stylish. I wanted to avoid modeling gun that are commonly seen in other games (the 1911, the Luger, the Mauser C96 for instance) primarily to set this project apart. And so I began the modeling process.

My modeling process (for game asset applications) consists of gathering reference material, blocking out the model, creating a high poly model, retopologizing to low poly, baking detail maps, then finally moving onto texturing and animation. After deciding on the design, I gathered as many reference images as I thought I needed (from different angles) to fully capture the weapon in 3D space. I then managed to bang out a rough blockout in a few hours. 

I inserted an extra step between the blockout and high poly steps to create a version using a subdivision surface for each piece to give the model a nice smoothing pass. I took this model and added detail such as edge wear, scratching, protrusions, tool marks and engravings to create the high poly model. 

Since the high poly model was not dramatically different from the subsurface division model, I took a shortcut and used the subsurface model (after deleting the supporting edge loops) with a shrinkwrap modifier to create my low poly retopologized model, the one that would end up in the game. This low poly model ended up having 5,614 tris and 2,976 verts. It took a bit of fiddling around with the shrinkwrap modifier and the blender smoothing groups to get a good normal map bake. The result, I think, was very good. After UV unwrapping I imported the model into Substance Painter, spent a few hours texturing and adding further detailing, then created a combined material that can be used with Unity's HDRP Metallic Standard workflow. Having the modeling and texturing done, it was time for animating.

Animating this model was difficult. I did not have nearly any experience animating, so by the time I was finished I had rigged the model from scratch twice, and animated it from scratch three times. My first attempt at viewmodel animation saw me animating the pieces of the viewmodel directly, with no attached armatures except for the arms and one for the frame which all the separate meshes were parented to. It was a mess and would not import correctly into Unity. 


After doing some more research I decided that I needed to start from scratch and completely re-do the rig. I also decided that I needed only one rig that was connected to each part of viewmodel. One (retrospectively) amusing challenge that took far too long to solve was how to parent individual bones to mesh vertex groups. As it turns out, the bones and the vertex groups simply needed to be named the same thing. Easy, if you've done it before. At any rate, once I got a well functioning rig, I then proceeded to lose all my animations because if an animation action in blender is not bound to any object, it is considered an "orphaned data block" and it purged when the file closes. I ended up solving this by giving the actions fake users to preserve them, but the damage was done and a third round of animation was in order.


Finally, I finished up the animations and exported them to Unity. This was rather straightforward, and now that I had a complete animation set for an object, I was able to start to learn Unity's animation system. Creating an animation graph in Unity went surprisingly smoothly and I managed to create a functional graph with only a few hours work. 

The next two days were spent programming the functionality for the weapon responses to user input which went smoothly as well. I had anticipated it taking at least two more days, so this blog post is getting out earlier than I actually intended. I designed the weapon handling system with architecture that supports the rest of the weapons the that will be implemented by the end of development.


With that, I was able to add my first functional weapon with animations to the game! It still has issues, no sound or VFX, culling issues with the first person camera, along with looking weird and squished. However, I am satisfied with my progress so far and am confident that these issues will be resolved. I downloaded the first reference image on the 20th of September and with today being the 10th of October, it took about 3 weeks of work (I was working on other things as well during this time). I estimate that I could get another asset to this same level of completion in half the time; given that I won't need to learn many animation concepts for the first time. Overall, I learned a huge amount working on this asset and I derived a lot of satisfaction when it was finally finished.

Level Design and Environment

Following my last post, I continued work on the wood paneled interior kit. I expanded the kit to around 18 assets including more wall types, floors, a ceiling tile and an arched wall section. The primary issue that I face developing this part of the game is my lack of experience with level design and environment art. On one hand, I need to have architectural kit pieces that I can play with in the editor to make a level, on the other, I need to build out a level in order to know what pieces I need. This has made getting into production a difficult task. Therefore, I have decided to start using a level editor to create a rough blockout of the level. The specific editor I've been using is the Yumponic Map Editor, or YuME for short. It has been invaluable so far for prototyping and I hope to showcase this in a future blog post. 

Goalposts

Within my last blog post, I didn't specify when the next blog post would come out. I didn't have an idea of what I would be accomplishing or where a cutoff point would be, so I chose not to specify an exact date. As I am now properly tracking my progress using this blog, I can say what I would like to include in the next post, but I won't say when. Ideally, I would like to to post again in a month or so; that seems like a reasonable goal, but I prefer to track progress by tasks accomplished rather than by time elapsed. My immediate plans include prototyping a map, debugging some major issues regarding visuals, and programming the basic functionality for the inventory system. I may also create another weapon soon as I have a few designs in mind and would like to see how much faster I can build a game ready asset. I'm not currently releasing a build of the game because its still very low quality and there is nothing to look at but, if you are interesting in playing the current build, please reach out to me and I will provide a download link. 

I intended to share more information regarding design goals and plans in this entry, but it became rather lengthy so perhaps that will be included in the next post. Regardless, I am very, very grateful to you for reading this post. I've been working hard on this project and the support that everyone has shown means the world. Thank you, and I will see you in the next one.

Report

Development Blog - 9/15/2020

Work In Progress / 15 September 2020


Introduction

I've been working on a project (with a working title of 'Intelligencer') for a while now, and I have decided that the time is right to begin a development blog articulating the process for creating this project. Intelligencer is a FPS game currently under development on the Unity engine and will feature common FPS elements with an emphasis on variety of gameplay options. Since this project is being developed by myself only, I intend to maximize efficiency during development. The game will consist only of a single level and I will release it as a free demo, since the true purpose of this project is to gain experience and build out my portfolio. My thinking is that having the game playable for free will better facilitate the exposure that I get from making it.

The original concept for this game was developed during April of 2020, but other responsibilities prevented work from starting until September. It is likely in the future that I will attach a link to the design documents originally written for the game, but they are currently outdated and inaccurate.

Early Decisions

One of the first choices I made was on the game engine to use for the project. I researched and weighed my options but finally decided on Unity over other engines such an Unreal 4. The reasoning for this decision was that, despite its reputation, Unity can produce very high quality games and is straightforward enough to use. Plus I already had some experience in using C# and the Unity editor. So far I have not found the engine to be any sort of limitation. I also chose to implement Unity's High Definition Render Pipeline. Building custom shaders is currently a bit beyond me, but I was not satisfied with the look that the forward-rendering in the Universal Render Pipeline produced. This decision has been satisfactory as well so far.

Early Work

Once I began working on the game, I added a stand in model for the player character along with a weapon I called a "taser" due to the stun effect that is associated with it. It was inspired by early bipolar electric motors with two large copper coils which generate charge, the idea being that if you were to touch these to someone they would be shocked and "tased". Attached is my original very quick sketch of the idea.


I then quickly modeled this in order to get a feel for the Blender to Unity asset workflow. I added a simple animation as well to "dip my toes" into the Unity animation system. Below is a render of the model.

Concept and Design

The original design of the game was to create only a single map, though in theory more could be made due to the modular workflow that I have been following; a vertical slice, essentially. Originally the player would be given the choice to start at one of three locations, 'safehouses' and would be tasked with reaching one of the other two safehouses in order to retrieve some object. Currently, I am working on only having one starting location and one destination to simplify the level designing process, though I don't reject the possibility of fulfilling the original design sometime later in development.

A few major sources of inspiration for this game come from games such as Deus Ex, Dishonored, E.Y.E Divine Cybermancy, and Bloodborne. I have always enjoyed the way in which immersive sim games give the player freedom to accomplish their goals, and I believe that having multiple methods for beating the level will grant (what is already only a single level) some amount of replayability. Another major design goal is the movement system. Personally, nothing is less pleasant to play than a game with a poor, clunky movement system. I intend on designating time to ensuring a good feeling of movement.

Aesthetically, my design goals are for the architecture to be symbolic of the themes of the game. Deep storytelling or worldbuilding are not among my design goals, but an environment ought to have some kind of internal logic to them, even if that is never expressed to the player directly. The location the player starts in will be an 19th century building, likely a kind of gothic church, and they will pick their starting gear. As the player progresses through the level, they will encounter enemies and navigate through the streets of a city which grows progressively more modern, until they reach a final confrontation in a towering office building. This is symbolic of a transition from old Aristocracy to modern Industrialists, and the design of the environment reflects this. In the future I will be likely to include reference and inspiration images with my posts.

Current Work

Currently, I have a working design for a part of the level which I have begun to partition off into kit pieces. I am currently working on the interior office kit pieces, and then I will progress to exterior pieces. The first post that I made on my Artstation account was the trim sheet material used to construct the interior kit. Below is a render of the current progress on the first kit. It currently includes wall, door, floor edge, and floor center pieces.


Roadmap

My current plan is to complete at least the kits required for the internal and external office building. Once these are complete (or at least 80% done, alpha quality), I will move onto blocking out the level, adding a low grade of detail. Once I have (at least part) of a level to work with, I can start to build out the development aspects of the game such as weapons, inventory, AI, etc.. After sufficient progress has been made there, I will then be at a stage where more assets can be built and integrated. I intend on following with updates to this blog as well, as I believe having a record of this process will be valuable for reflection when the project is complete. 

Thank you for reading, and I appreciate any feedback regarding this project or blog post. Cheers!

Thomas Vanek

Report