Friday, October 14, 2016

October Overview

Completed Models and Resource Optimization


So, in the time between other times, I've completed another few small props for the game; basic scene dressings that can be placed around the world.




As a feature of Substance Painter 2's export tools, there is an interesting feature that is included that will save on user VRAM and likely on other GPU resources. In the world of game development, there are various texture maps that are used in creating complex materials. Some of these maps, such as metallic maps, height maps, and ambient occlusion maps are maps that are generated in grayscale. This means that a pixel found on that map, of say a roughness map, with a value of white will be interperated as having a value of 1, or full roughness. Black, or 0, would make the surface smooth.

What Substance Painter 2 does with this, to turn three different 4MB files into one 4MB file, is it converts these maps into RGB tones. For example, red would be 1, and black would be 0. By doing this, we can overlay each of the maps on top of one another (and make a really ugly picture) to save on memory. This image can be taken apart and interperated by UE4 during runtime to create the maps that are desired.

Let's say that in our RGB map, red is roughness, green is ambient occlusion, and blue is our metallic map. When being taken apart and iterperated by UE4, if a specific pixel is purple, that means that that area of the texture map has values of roughness = 1, ambient occlusion = 0, and metallic = 1, because the colors red and blue are present, but not green. Gray would imply that all values are equal to 0.5.

On a side note, we've also fixed the shaders in Substance Painter 2 so that they are more representative of the shaders in Unreal Engine 4.


Sergal Model


Looking into the history with the Patreon that is running for the development of this game, and I was wondering why I didn’t have a whole bunch of support that was on par with the good comments that I’ve been getting from people I’d talk to. A lot of people agree the game is a good idea and that that like what I’m doing so far, but I thought something was missing…

I recently came to the conclusion that people would probably be more willing to financially support a game about sergals, and myself, if they actually saw sergals in the game! So, I started making a final (and hopefully it is the final) sergal model to put in my game.

This is a .gif that was used to highlight improvements to the arms of the model, but can also be used to show the overall progress as of 10/10/2016.


What you’re looking at here is a “blank and smooth” male model. He is still missing a lot and needs a bunch of refinement work done on him, but he is some pretty good progress that I’ve got done over the past week, which includes forming the entire base model and various improvements as suggested by the Project Freelance Games community. (Thank you everyone who provided your feedback on the model!)

The way I see it, although he almost looks done, he is only around 1/5 of the way complete.

Texturing and unwrapping is exactly what it sounds like.

After texturing, I’d like to add fur to our model before working on anything else. That is a whole set of complex problems in of itself. Hopefully, it won’t take too long to rig up.

For skeletal rigging, I want to have the base skeletal structure to use for animations, but I also want more intricate facial rigging for expressions, blinking, and talking or shouting. I also want spring joints, also known as jiggle bones, to simulate dynamic movement of different parts of the character, such as ears and tail. In the engine, I am also going to set up inverse kinematics, so that the character’s feet will dynamically update to what they’re standing on.

After that, it’s on to animations. I plan to use a lot of blended animations to get as dynamic a character as possible. This means that the character can decide, from a list of approved animations, what they’d like to do. For example, if we have a character who is walking, we’ll have then run a walking animation. There isn’t really much else we can do with that half of the body; if we’re walking, we’re walking. The top half of the body though, that can have different animations such as regular walking, carrying a weapon in two hands, carrying a weapon in one hand, of the character can even decide if they want to scratch their head or their arm. These animations can be mixed together to make completely new animations at run time and can make a character look more life like.

Looking forward to having a completed model!


Unreal Engine Update / NeoFur Update


We have moved from Unreal Engine version 4.11.2 to 4.13.1

Notable improvements from the previous engine version that would be able to be implemented into Vilous: Soldier of the North include planar reflections, grass and foliage scalability, twist corrective animation nodes, as well as some updates to the stock AI pathfinding, among other impressive things. Unreal Engine 4.13 release notes can be found here. We also updated our NeoFur version from (1.0) 4.11 to (2.0) 4.13 for support within the new engine.

NeoFur 2.0 (4.13) boasts many new features over the older 1.0 (4.11) version. We still have all of the same features such as our dynamic fur simulation, self shading and advanced PBR material support, but in 2.0, artists have access to much more powerful features. Version 2.0 of NeoFur is much more strand-driven, as appose to only using shells for rendering like in version 1.0. This means that density maps can be used, height maps can be used to dictate strand length, undercoats of fur and overcoats of fur can be rendered, each with their own PBR settings, and many other impressive features that will be noted in the next update on this blog when we are finishing our sergal base character.

A screenshot taken from a user of NeoFur who posted this on Twitter. An amazing example of the realistic capabilities of NeoFur.

Team Update / Story Update


We've added a new member to our team! You may know Siskmarek from interactions with her on Twitter, the #Justice4Sisk campaign, or from the sergal game she was making a while back; Dissertation. Unfortunately, due to severe complications on her end regarding the directions things have been turning out for her, she is unable to work on her own game.

However, she has offered to help me in creating V:SotN! Due to her situation, she is unable to access a computer and is flying with some clipped wings, but she is still passionate about the project. Drawing concept art up and helping in writing the story, we're making great progress in creating this game!

Once things are fleshed out a little more in the story aspect of the game, I'll discuss the direction the game is headed apposed to where it was headed. All of these changes are made with user experience in mind, so they're for the better!


Patreon Update



A special thanks goes out to everyone who is supporting this project on Patreon. We broke our $40 goal, so that means that we're going to start hosting live streams for game development on beam.pro. We're plan to try and host a live stream every Thursday. Due to the complexity of my current schedule, this may not be able to happen every week, but I'm going to try! Above are screenshots from the last live stream, done on 10/13/2016.

Saturday, September 17, 2016

August / September Updates

If you would like to visit the Patreon page, you can click here to see the video associated with this update.

Since the last post on this blog, we've made some improvements to the sandbox system. Specifically, we re-added and fixed placement collision testing. If on a valid surface, the game will test to see if the item you're trying to place is overlapping anything in the world, and it does it with a much higher degree of accuracy compared to the old system. Below, a player can be seen placing a box underneath a table with both valid and invalid placement feedback. This shows how fine the system can be tuned for placing objects next to other objects.




This new collision detection system properly updates based on the placement mesh that is selected, where the placement mesh is in the world, and how the player orients it.

We've also acquired a copy of Substance Painter 2 at a discounted price to use for texturing items in V:SotN.





Above, there is a quick model that was created to play around with the new software and learn the new tools. It's a small spool of thread, only 2.5in (6.35cm) tall. It comes in four different states to add a bit of diversity to the scene. The base thread texture is also white for a reason; I can easily create instances of the thread material in UE4 and change the color to whatever I’d like it to be.

Substance Painter 2 has a slightly different tool set that I’m trying to adapt to, so the first few models I paint might be bad. I’m working on learning some of the more advanced features like how to set up my model for use with some smart filters and materials in regards to things like automatically generated edge wear and ground dirt.

I’m already dabbling in some features like masks and filters.




Finally, I've also ordered some more hard drives for backups and storage of my game. I now have a total of 3TB internal storage in my computer. You can see my main, all purpose C: drive, and my external 3TB drive that I use for Steam games. You can also notice that I only have one of the new hard drives set up and divided into three partitions based on the media type. (This is because I forgot to order SATA data cables, so I had to rip my house apart looking for the spare one I had laying around. Once I get my new cables in the mail, I'll have the second new drive set up for backups as well.)

Monday, September 5, 2016

Sandbox Coding Progress

  Inventory systems and sandbox features are some pretty beefy feats of coding found in modern games. Though they seem like relatively basic features, actually generating executable code that will preform the way you'd like it to is rather challenging. There are many things that can go wrong and there are some trivial problems you can run into. The logistics of everything is pretty easy to solve, but again, making the code is what's difficult.

  So, let's basically outline what we wanted to make for this update.

  The player can walk around in the world. While walking around in the world, players will be able to pick up certain objects; specifically, actors that have a special flag associated with them; "canPickUp". If the item we come across can be picked up, then the player can press F to pick up the item. When the item is picked up, it is removed from the world, and the weight of the item is added to a variable called "currentlyCarrying." (This actually happens before the object is picked up so we can see if the player can carry it, as "currentlyCarrying" is compared to "maximumCarryingWeight", but anyway...) When the actor is picked up from the world, it is added to the player's inventory. Nothing too complex, right?

An object that can be picked up in the world. This is our debug item.

  Let's move on to the sandbox aspect. When sandbox build mode is entered, the player will run a ray trace from their camera, over to what they're looking at. Whatever we want to build will be placed at the impact point of that ray trace. If the object can be built there, the object will have a green glow to it. If it can't be placed there, then the object will have a red glow. (I'm not going to get into the complex ideas behind checking the ground angle the build object is being placed on, or in checking proximity to other objects.)


  The object can then be placed in the world with a white "ghost texture." This is our blueprint of what we want to make. The idea is that the player leaves to collect the supplies needed to build this object. Until they have the supplies, they'll be able to walk through the blueprint. When they come back, if they have the required supplies, they can press F to build the item. The objects and object weights are removed from the inventory, and the item is built in the world. A little heavy, but simple, right?


  I'm not going to cover all of the details of the inventory system since it's something that has been done for a few update cycles, but I'd like to go over a problem I was having with removing the items from the player's inventory when they try to build something.

  One would assume the solution to this problem is to simply look through the player's inventory and if they have the item that is needed to build their blueprint, then remove an item of that type n times until the times that item type was removed matches what was needed for the building. After that, we add up the weights of the objects needed, and subtract that from what we're currently carrying in our inventory.

  Logically, that's exactly what is happening. However, the solution isn't as cut and dry as the plan. Below is a video explaining the issues that were encountered and why the plan isn't able to be coded into the game as it is.


  In addition to being able to place a debug item in the world and building it, I've also created a feature that allows the player to open an interface and choose what they want to build, as outlined below.


  Above are two screenshots that show the player being able to open the survival book, as well as being able to turn it's pages. Every page is associated with an actor that is able to be built in the world. In the final version of the book, there will be informative pages scattered between pages that allow the player to build different objects. These pages, as shown with the inside cover and title page, will not have an interface to "plan" building an object.

  It's also in the development path that there will be sections of the book the player can turn to to avoid thumbing through a bunch of information they don't need, over, and over. The book will save the page you were turned to, so the player can open to it again if they need to build multiple items of the same type; they don't need to find it every time. We also plan on having a feature where players can "dog ear" pages. This will be the equivalent of "favoriting" a page to reference back to it later.

Multiple planning blueprints being added to the game by use of the survival handbook interface.

  We soon hope to have a video detailing all of these features that will be used as a Patreon content update.

Sunday, July 31, 2016

June and July Progress

This post is going to serve as an update for the Patreon found at this link here.

So, I know things have fallen behind a bit, and I haven't been getting that many updates out like I should have been. The reasons are related to supporting a loved one. I won't go over the personal issues here, but I will talk about what has been done in the past few months and I will provide screenshots of what I can.

I'll start with some behind the scenes stuff. A lot of work that has gone on in the last few months has been stuff I can't really talk about too much. This being because it is all story sensitive information. The before mentioned loved one I've been helping about has offered to help out with the project. She sees the passion I have for game development and is just as passionate as I am. She was recently, before running into the complications, trying to develop her own game and decided to put it on the shelf as a result of the complications. She is an amazing story writer who understands all the ins and outs of what makes a story interesting, she is an amazing artist, and she has experience with technical computer work. Once things slow down in our lives, I'm sure I'll be posting some amazing concept art that she makes.

Out of the creepy and spooky shadows that shroud our story to protect it, I've mainly been doing some model work. All of this work has gotten me much more comfortable with the tools that I am using; especially Substance Painter, which is a beast if you don't know how to use it. It works wonders in material and texture creation as can be seen below.

The first hand-painted 3D model to be imported into the game. The lower dirty half of the model is intended to be underground. It extends underground so much to compensate for terrain height variances.

This is a screenshot showing the fence model being used in game. This view is from in the editor.

Next, I worked on a chest model. This model will be used to test containers and storage in the game. It's got its own problems, and will only be used in the preAlpha map because of them. Below are some screenshots of the model. I learned a lot in creating this model and in painting realistic textures. My main focus on this model was the metal. I figured out how and where to apply different types of wear. As you can see, this model has a thin and spotty layer of rust covering it's metal parts. The rust blocks out the reflections of the metal underneath, as to does the "tarnish" layer I painted on it.

A view of the chest model inside of Substance Painter.
The chest model as it appears in the engine. This too, is from the editor window.

One of the last models I've been working on, I'm relatively proud of and am looking to see how it turns out. It is the biggest model I have ever worked on. Because of it's scale and importance, I've imported it into the editor to check proportions and to get another view on it while I work. The model is Elara's house. I think the proportions of the house are nice; not too roomy, and not too cramped. I'm very happy that it imported so well. There are a few things to fix on it, but this is all in development. It was only loaded into the editor to see how it would look from the player's view.

The basic floor plan of Elara's house, as seen from inside of Blender. Each gray square on the ground is one square meter.
Elara's home, visualized with a roof and placeholder support pillars.











A view of Elara's home from in-game. Note that the house is elevated off of the ground to the floor inside would be flat.
This is an animated .gif that shows the internals of Elara's home, from her point of view.
I've also been working on a few easter egg things here and there, but we don't need to worry about that... It really hasn't distracted from work on the game all too much. It has helped with understanding materials and textures more than anything else really.

"spek.exe"; "I'm feeling lucky."

Thursday, July 21, 2016

Dark Times...

This is more of a personal update to explain what has been going on in my life and why progress on Vilous: Soldier of the North seems to have stopped. Just to clarify, although it has slowed, it has not stopped.

Without going too into detail on personal matters, some of my loved ones in my life have been going though a tremendously difficult time, and I've dedicated as much time as I could to keeping them safe and of healthy mind. I will always put the ones I love ahead of my hobbies. It seems like it's only getting worse and worse, with no reprieve in sight. Thankfully though, we've gotten just that and the past few days are much more upbeat than the past few months. We still have a long, two year battle ahead of us, but with any luck, we'll get everything we're fighting for and we'll be happy together once again in the big stupid family we should be.

To anyone who is concerning themselves and involving themselves with this matter in a positive way, I'd like to graciously thank you. It has been really hard on all of us and any support, be it even kind words, go farther than you could imagine.

Regarding game development stuff, I'll get a few updates out before the month of July is over; updates to cover what has happened in June too.

Thank you for your support and understanding.

Thursday, June 2, 2016

Touch fuzzy, get dizzy

NeoFur get!


This is the first NeoFur asset we created for V:SotN


I've briefly spoken about this tool with my discord server. NeoFur is an amazing tool that has been designed by Neoglyphic Studios for use with Unreal Engine 4. This outstanding technology will allow us to render dynamic, shaded fur, feathers, and fibers on our models in game, in real time.

NeoFur works by using a shading technique called "shells and fins". Basically, fur strands are generated from the geometry of the mesh that they're applied to. The direction and flow, as well as the growth length can be changed in different ways by the use of growth meshes, morph targets, and masks. It's easiest to visualize this technique by thinking of the fur strands as a stack of wafers that come off of the model and have a favored direction for the stack to lean. From really up close, this technique really doesn't look too good if you can see all the shells. If done correctly though, from a respectable distance, the outcome is astonishing!

A close up view of our first fur asset. Notice how you can't see the individual shells.

The fur length has been exaggerated and shell counts reduced for what would be recommended to better show how the "shell shading" technique works. Fur is 10 units long in this example and only has ~15 shells.

Mentioned earlier, what makes this tool even more impressive is that the fur strands that are rendered are also dynamic! This means that gravity affects each strand, and the character's movement can dynamically alter the positioning of each fur strand. If that wasn't enough for simulation, the fur is also affected by wind and radial force actors in Unreal Engine 4!

A .gif of simulated fur physics.


As far as detailed rendering goes, fur stands are also able to receive and cast shadows, which adds a whole new layer of depth to the fur. Not only can individual strands cast and receive shadows, but other advanced shading techniques like rim lighting, ambient occlusion, and advanced specular techniques can easily be implemented. Below, you can see the difference between casting and receiving self shadows (left), compared to not receiving self shadows (right).




Self and world shadow casting example using different colored light sources.

All of these previous images have been test images that were generated by using the tool in our PreAlpha map. If you'd like to get access to NeoFur, check out NeoFur on Neoglyphic's website. If you're on the edge of deciding if you want to buy it or not, you can visit that link and download a demo project that shows off all of NeoFur's features and even shows off some content examples.


A collection of NeoFur assets that are shown off in their demo project.


I'm really looking forward to getting character models in game and actually adding some realistic fur to them!


Wednesday, June 1, 2016

Progress Update for May, 2016



Check out our monthly progress update for the month of May, 2016.

This update covers some impressive advances in the field of artificial intelligence development for our game, Vilous: Soldier of the North. The video covers how the AI can see, how they hear things, how they make choices, how they guess and think, and how they can communicate with one another.

Highlighted in this video are also some things like a tool that I created to help keep track of the changes that are being made in the engine, as well as particle effect updates, and what is going on with character models and motion capture.

PFG on Blogger



Project Freelance Games on Blogger

We now have a blog on blogger! This service seems a little more flexible and user friendly when it comes to certain things like organizing different pages on the blog and post formatting. We are also able to keep track of page views and where people are viewing the pages from! Our Tumblr blog will still be maintained, but will be much more laid back with more personal updates, appose to this blog that aims to more objective in it's updates. Go check out the Tumblr blog here!

This blog will hopefully serve as a more professional, and sort of "hub" blog for all future game development done by Project Freelance Games. The current project can be found in the navbar near the blog header. Later, when we move on to other games, that title will likely be moved to something similar to an archive section, and the new game will take it's place on the navbar.

There is also a section on the navbar that will point users to where they can purchase games that have been made and where they can donate if they want to support our development.

I look forward to getting some updates on here.

And as always; Indie devs, lead the way.