Announcement

Collapse
No announcement yet.

The Heart

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • started a topic [GAME] The Heart

    The Heart

    It's a bit difficult to explain what this project is all about.

    For many years I’ve been doing mostly still image artwork, and during the time of creating one of those still images, I had an idea that it would really be cool to actually be able to experience what was taking place in the image instead of only having the still image. One thing kind of led to another as I had ideas for things, and I realized there were a whole bunch of ideas I have had for images, and other things I enjoy doing, like playing music, painting, coding, that were all kind of converging and could fit together into this one single work of art. It's really turned into a whole new way for me to do artwork.

    Although I'm using a game engine to create it, I'm not really trying to create a game. I'm more trying to create a painting that you can walk inside of, very much what being out in nature is like in the real world. So I guess in the end, the game engine is like a paintbrush, and I’m not necessarily trying to make a game, but a piece of art that is experiential.

    Downloads
    Since it's not something that I'm planning on trying to sell, I thought it would also be fun if you could play the game while I'm making it, so you can find the link to the working game, or artwork , here: http://www.artoflightandmotion.com/downloads

    Purpose of the Project
    To tell a little about the purpose of it and the core of what it’s about, it’s a work of art that is all about the heart and having an open heart versus having a closed one, but since it’s experiential, I really just want to make something that opens your heart while playing it and maybe even brings a bit of healing or respite from the difficulties in life, if that’s possible. I think in the end, being able to have an open heart and knowing that we are truly loved and accepted as we are, that we are okay, is what we all long for the most, but can be one of the most difficult things to keep and accept, because it makes us vulnerable to being hurt again. But it’s also one of the most important things to have in life and effects everything we do. This whole idea of the heart changing is central to what this game is about. Love coming in and flowing back out again, and that when the heart is closed off, it blocks the love from flowing.

    For me, it was Jesus' love that opened my heart and keeps on opening my heart each day. His love has changed who I am as a person, and I don't really even know how to describe what it means and the reality of His realness; but when you really encounter, not a religion, but the existence of this person Jesus in your life, everything changes. There is know way to ever go back to an existence without Him, and He's as real as someone standing in front of you. It's like, my goodness, He's real and alive, and what's more, He completely knows me, yet loves me so deeply, and I'm worth so much to Him. A lot of days, it's really tough to keep my heart open with all the difficulties that come in life, and all the things that come from all of us interacting with each other, but that's just kind of the way life is when we have free choice to hurt or look down on each other. Yet, in spite of those things, I know everyday that I am forever accepted and loved by Him just the way I am, and that love has a way of opening my heart again. It's why He gave His life on the cross was because He loved each of us so much.

    As the prophecy that was written about His death seven hundred years before He came says, "Surely He took up our pain, and bore our suffering, yet we considered Him punished by God, stricken by Him, and afflicted. But He was pierced for our transgressions, He was crushed for our iniquities (sin or evil we do to each other); the punishment that brought us peace was on Him, and by His wounds we are healed. We all, like sheep, have gone astray, each of us has turned to our own way; and the Lord has laid on Him the iniquity of us all... After He has suffered, He will see the fruit of His suffering, and will be satisfied; by knowledge of Him, My righteous servant will justify many, and He will bear their iniquities." (Isaiah 53:4-6, 11, with footnotes) It really was His incredible love for each of us and His heart's desire to bear the consequences of our evil so that we could have eternal life with Him, if we choose to be with Him, and it pleased Him to go through what He did, looking back upon what He had done and being satisfied. It just always makes me so sad though that so many people miss out on getting to really know Him in their lives, Christian and non-Christian alike. They don't know what they're missing out on . He really is the one who everyone is searching for, if they would only ask to know Him and make Him the ruler of their hearts, but that's another story .


    To get back to the main topic though, really the entire CG industry is based around all of us wanting to be loved for something that we’ve made. It’s one of the things we all long for the most in life. For me, it’s such an absolutely wonderful thing to wake up everyday being loved by God. To know that you are loved so completely changes everything in life, and I guess it just seems like, out of all of the things we live for in life, if there is anything I would like to do, it would be to be a part of opening someone else’s heart to be able to care and love again and, in some way, know that they are loved as well.

    This rather old interview with someone explains this heart change quite well too: https://www.youtube.com/watch?v=63vM7NcrB-o

    And that’s it really; it was a bit long, but now you know why I’m making it and what it’s about.



    Things in the Artwork Already
    Real-time seasonal transitions
    Real moon cycle
    Real day/night cycle based on latitude
    Teleporter room to travel around the landscape
    Wind movement in sync with audio

    Latest Screenshot or Video
    Videos:
    Aspen Groves with new Aspen trees:


    Calm wind:


    Teleport Room:

    https://vimeo.com/239392260

    Previous new feature videos can be found here:
    https://vimeo.com/album/4878887

    and here:
    https://www.youtube.com/watch?v=HuMh...qFls7HRpY5xgl1


    Screenshots:
































    Poem at the Heart of the Project
    The heart is such a fickle thing, the way it seems to mirror what’s been put in.
    Even mirroring the things we hate, when shouldn't we want to become the opposite?

    Yet I find that, as others bring pain to me in the coldness of their hearts, my heart cares less and brings pain to others, and that which I hated so much, I have become in other’s eyes.

    It is said that we should love our enemies and bless those who hurt us.

    Is there any other way to live?

    If I give pain for pain, am I not just the same as them?
    And if I am the same as them, can I ever be against them?

    But can I ever love again?

    The risk of pain can be so great,
    and what I need the most I run away from.

    To open my heart and give.

    But this heart must come alive, to let love in and breath again.
    For if I am to love again, I must first let love in.

    So let the doors fling wide, and let my heart beat again
    To let your love flow in and flow back out for others

    For that is true life, when my heart beats and love flows through.

    I do not always get to choose the things that happen to me, but I can choose who I want to become and the heart I want to have.

    So who do you choose to be?





    Inspiration for the Project
    If you would like to go deeper and read about the philosophy behind the artwork, as well as the inspiration for it and the game’s story mentioned below, you can read all about it here: http://www.artoflightandmotion.com/about-the-game



    Music in the Game
    Just a short word about the music, so far all of it has been done by me, but for the most part, they aren’t actually composed songs, just music I play spontaneously. Even though it is spontaneous, they usually do still end up sounding very nice, for the most part, and it’s always really neat to see the kinds of songs and melodies that come out. I think so far the piano sessions have turned out the best. Also, it’s not the best of audio quality since I only have my laptop’s mic to record it with.

    You can find some of the music on SoundCloud here: https://soundcloud.com/user-304480598
    https://soundcloud.com/user-30448059...iano_session-4



    Things I could use help with
    Right now, the main thing I need help with is just testing it while I’m creating the game, and letting me know how well it’s running. I try to heavily test everything out as I go along, but I’m still not going to find all of the bugs. So it would be great if others could test it out and let me know if they find anything, or even just let me know how well it seems to be running on their computer.


    Game Design Document
    Folder

    Here you can find out more about what I plan to add to the artwork, and check in to see where the overall game is headed. As I have ideas for things, I'll be updating things below and in this folder here: https://www.dropbox.com/sh/fyfmyqpsx...S6NOnVx2a?dl=0
    You can read more about the story there as well.


    Story in the Artwork
    I’ve had ideas for a story and puzzles to solve that I’m hoping to have in the game (eventually ) that you might stumble upon while playing it, but it’s not the main purpose for playing, just something that enhances the experience of the art.

    I don't have any details worked out for it, but it would be something along the lines of that you are inside of an older person’s memories, going back through time to different events and things that took place in his life that closed down his heart and made him into the person that he is now, and as the story progresses, the person would be working through all of the emotions around those events in some way. I had already planned on having several different houses in the game, but basically each house would be a place that this person lived in through his life, and you would go back in time to certain dates when the person lived in this house and solve puzzles that would be for that specific time period that would reveal a part of his life story, and work through opening his heart again in a certain area of his life. With having seasons, latitude, and a realistic sun position, I think it could also make for some really interesting puzzles having to do with time and where the sun or stars would be at certain latitudes and times of the year. Also, just a really interesting environment being able to change the entire look of the map with different seasons or even what direction the shadows are going in.


    Overview of the areas in the map
    I thought I would try using SketchFab as a visual game design document, so here you can see the entire map as I have it so far and what I’ll be working towards in each area.

    If anyone has ideas for improvements, I would be glad to hear about them
    As a note, SketchFab seems to run quite slow in Safari, so if you’re using it and it’s going slow, Firefox works much better.





    Free Resources
    Last but not least, here is a folder I started containing any free resources or explanations for how some things are created in the game that I thought might be useful for people. Right now it only has the explanation for how the seasons work, but eventually it will probably be quite full of things as more of the artwork gets developed:

    https://www.dropbox.com/sh/v03321o6yk41zx6/AABeZJFVSCkImy-XB50CLCYga?dl=0




    That's everything with the artwork/game, so enjoy
    Last edited by ArtOfLight; 04-15-2019, 01:15 AM.

  • replied
    Finally have another update ready! That's the trouble with starting such long projects is that you usually start them when things aren't too busy, but life isn't always that way, so you have to kind of let things ebb and flow .

    For this update, the main thing I added was the grass. I added new Game Builds here if you would like to see it: http://www.artoflightandmotion.com/downloads , and here are some images of how it's looking:
























    I spent a lot of time experimenting with it, trying to figure out what the best method might be for it in the end, working with the way the season's function as well. In the end, I went with kind of a mix between small grass cards and individual blades of grass. One of the main difficulties with the grass is that, when you add seasons into the mix, the grass has to start disappearing in Winter, and if you're using only grass cards for it, then you run into massive amounts of transparency as you might only have one blade of grass still visible on the card, but since that one blade is there, you can't move the card out of view. So you end up with a very huge amount of calculations that have to be done each frame because there is so much transparency. Although going with the route of having one blade of grass per card, you can just move that card somewhere else in the level when that blade needs to disappear. The downside of course is that you also have more vertices that need to be rendered. So in the end I went with having between 1 and 4 blades of grass visible on each card, then just had that whole card disappear, even when there were 4 blades of grass on it when it came time for it to do so.



    To talk a bit about performance, here are the results of some of the tests I did. I forgot to take screenshots of all of the original tests I did, but here is something I threw together real quick to show the end result of those tests. To start off, here are some of the meshes that I tried:



    On the left, it starts out with 4 vertices on one card, then goes to 6, then 9, and lastly on the right, the final model I used for the blades of grass with 359 vertices. For the test, I did it in the early morning part of the game, when performance is the worst because the shadows are so long, and I also did it right when the transparency would be the worst, during the time that the grass goes from being dead to growing again in the Spring, and you have to make the dead grass transparent so that it can look like the grass is growing again. A few more things to note is that I did the tests while in the Unreal editor, so there is a little worse performance because the editor is still open. I also did it with all quality options turned on to their highest setting with 1920 x 1080 resolution. Lastly instead of painting new models onto the landscape each time, I would just replace the model in the foliage settings to make sure everything was in the same place and there were the same number of models in each test.

    Now for the results, with the 4 vert card, I got around 53/54 - 69/70 FPS. With the 6 vert card, I got basically the same, maybe a half FPS less. Lastly the 9 vert card had about 51/52 - 68/69. Here is where things get quite interesting though. When I tested the grass blades with 359 vertices, the performance I get is 51/52 - 68/69, which is amazingly the same as the 9 vert card, with maybe just less than a half FPS worse.

    So altogether the grass blades actually give about the same performance as the cards, even though there are so many more vertices. I believe the reason for this disparity can be seen here in the shader complexity view, which I believe shows something to do with the amount of instructions the GPU is doing in one of it's cycles. I'm not sure exactly what those cycles are, but if there are more that need to be done than the max amount for a cycle, or 2,000 instructions, it has to do them in it's next cycle, which means the frame can't be rendered as fast because it has to wait for the next cycle. To show all of this, Unreal has a view you can look at that goes from 0 to 2,000 for each pixel. First, here is an image of what I was testing looked like in the normal game view:



    Now here is how that looks in the Shader Complexity view with the single bladed grass. While there are some areas that start to get a bit white, meaning a very large amount of shader instructions are being done for that pixel each frame, it's not too bad for how much is going on in the scene:



    The grass cards however are really bad:


    Keep in mind too that the white just shows up to 2,000 instructions being done, but the actual amount that has to be done can be quite higher in total. So with these cards, who knows how many instructions are having to be done. I believe this is where the disparity comes in, because even though there are less vertices to render, there are also far more instructions to do on each pixel.

    Something to mention with this is that I didn't have a texture for the grass cards when I did the testing because I would have had to change the final shader I made to do it. So they are fully transparent, but with how little the grass would actually be there at this stage, it wouldn't effect performance that much, if any. So altogether, in this case, having cards instead of blades of grass is only a couple FPS better, but that's only if you replace it by just one of those cards. In a more real world case, when using a 4 vert card, you would usually have at least two of those cards intersecting each other, per bunch of grass, to make it more 3D, which brings it to at least 8 verts per bunch. Many games now days also even go further and use the 6 or 9 vert cards instead, and putting several per bunch, which would bring the vertex count even higher, and would actually start to create even worse performance than the grass blades because of how much transparency there is, and the addition of more verts than I tested with. So it's really quite a result to the test that having such a large amount of vertices could actually work better than cards with less vertices, simply because you don't have such a huge amount of transparency.

    As a note, since those tests were all done while the editor was open, it's not a very good indicator of what the final performance is. To find that out, I did a build of the game and the final performance in the final built game seems to be above 60 FPS at 1920 x 1080, no matter where you are, what season you are in, or how low the sun is. So that's definitely quite good. There is a really weird spot though when the sun is pointing in a certain direction, and you're looking directly away from the sun that it all of a sudden goes down into the 40s. Somehow it seems to be connected with the Distance Field Far Shadows, and I believe the trees that are way out in the distance, but I really have no idea what is going on with it because their shadows shouldn't even be being rendered when the player is looking away from them. I think I'm going to have to learn some more performance profiling to figure it out, using a program like RenderDoc.

    One last thing to mention if anyone wants to replicate this is the 359 vert grass bunch takes up about 1 square meter of space in the game. So you have on average about 450 vertices per square meter, because they can overlap a little when painting them in Unreal. I should mention too that probably the only reason I can get such performance altogether is because of those earlier tests I've been doing with not using Unreal's landscape system, but going with a static mesh landscape that I import from Blender. Without that, performance would probably be down into the high 40s at this point as the best.


    Now that all of that is explained, there are some other things I've added to the game. One thing is I also came up with a way to have dead grass on the ground in meadows and places like that, where it would just look strange to have nothing there when there isn't snow on the ground during the winter. What I was trying to replicate is this kind of idea, only for right now, with shorter grass: https://pixabay.com/photos/landscape...pring-2083440/

    Here is another image of the basic idea I'll be going towards as I get more grass types created, where it will be a bit like this image at first, but as the winter progresses, more and more dead grass will fall over from the snow, and eventually most of it will be lying on the ground like the above image: https://pixabay.com/photos/fog-foggy...orest-1122507/

    Here are some images of how that is looking in the game. It's still not quite the way that I wish it looked, but at least the method for doing it has been all figured out. Since they are on the ground, I also went ahead and used cards for these:






    One other pretty cool thing for the grass is I was able to figure out a way to have the grass blades go away over the course of the entire winter, instead of just before the year ends. To give a little explanation about why this is a really neat thing, the way I have been doing the seasons was to start off the shader in a state of being in winter at the beginning of the graph. So there are no leaves or anything like that. Then as the year progressed, I would gradually override this with the Spring leaves growing into full leaves, then override that with the Fall colors on the leaves, then override that with the leaves disappearing and the whole thing going back into winter. So it was a very linear sort of thing of just overriding each effect as the year would count up in days, but there was no way to have any effect overlap from one year to the next year, and for instance, the leaves on the ground had to all disappear by the end of the year so that it would match with the starting point of having no leaves at the beginning of the next year.

    The problem with this whole thing though came with adding the grass because it doesn't look right when you have just a barren wasteland without any grass during the winter, and all you have is a texture on the ground. So I had to add a way for the grass to basically halfway disappear by the end of the year, then in the next year, continue where the other year left off and finish disappearing right before Spring, when the grass would need to start growing again. My goodness, things definitely got a bit complicated there for a little while trying to do that . Mainly because of how much the transparency and colors have to change throughout the year, and some season effects have to basically happen at both the beginning of the material shader, then also occur again at the end of the shader when winter comes. It worked out in the end though, so that's good . What's great about it is that now there is much more continuity for the entire winter season, and I can also add the same thing to other things, like those leaves on the ground, which I think really do add a lot to the way the winter months look.



    A couple more things that happened are I got some more Aspen bark sculpted. For these, I was doing a very generic sculpt that could be applied on a lot of the trees. This way the more unique sculpts feel more unique when you see them, and the main thing is that you don't really notice that you're looking at the same textures as much while walking around, unless you're actively looking at the trees. I was also able to use some of the generic black "eye" areas I had sculpted from other bark sculpts, then add unique black "eye" areas around them. So that saved some time. Here is how those look. The second one is only partially finished, and the lines show the area that will actually be on the tree, as well as what parts would be visible when you can only see a quarter of the tree at a time when it's applied on the tree:





    The other thing was I finally found a solution to the way the branches on the trees would disappear during the winter as you got further away from them. This is something that I have been struggling with for quite some time, and the solution actually came as I was researching different ways of doing grass. In the end, it has to do with the Mip textures in Unreal. These are basically LODs for textures that make the texture resolution smaller as you get further away from it. I found out the problem was that the Mip textures were getting too blurry for branches to still be visible as you got further away from them. So I adjusted the Mip bias in the Material Editor for that texture so that it would use a more high res than normal texture, and it all works fine now. No more disappearing branches!


    And I guess that should be everything for this one. Until the next one

    Leave a comment:


  • replied
    Next update is done! I went ahead and did new game builds as well found here: http://www.artoflightandmotion.com/downloads One of the biggest things this update is I finally finished the explanation of how to recreate the seasonal changes that are inside of the artwork/game! That can be found here: https://www.dropbox.com/sh/v03321o6y...B50CLCYga?dl=0 and more permanently in the Free Resources section in the first post. So if anyone has been interested in knowing how all of that works, you can finally see it!



    Another big thing on this update was getting the system worked out for having leaves on the ground that appear and disappear during the Fall. It took a while to create everything for it, as it often does when you're doing something new, but the effect seems to work quite well in the end and adds a lot to the scene. There were also a few times that I wasn't quite sure if it was actually going to work, but I kept having ideas for things and it does ! Here are some images of how it looks:
















    One of the biggest problems I had with it was getting the meshes to flow with the terrain and along steeper hills. Previously, I had an idea of using a heightmap of the terrain that I made in Blender to then displace each vertex according to the heightmap, by first bringing all the vertices to point 0 on the Z axis (or Y in other programs). That way everything is flat. After that I subtracted from that point 0 to bring all the vertices down to the lowest point on the landscape. Then you can just multiply the Heightmap by a large amount, and add that to the previous calculations, which gives Displacement that lines up with the actual terrain.

    This almost worked, but I was still having problems that I wasn't really sure how to solve, as can be seen in this image of how the leaves look like stairs:



    Initially I had thought that the problem was the texture resolution wasn't high enough, which seemed reasonable because of how it looked pixelated, but I was already using an 8192 x 8192 texture size and couldn't reasonably go any bigger than that with how much GPU memory that would take. While thinking about all of that, I all of a sudden realized that I could actually shrink the area that I was doing the Height map for. Originally, I was trying to do the whole map in the texture, as well as some area around the map, so that 1 pixel would equal one meter in the game world, but I realized I only needed a Heightmap for the playable area, which was only about 4000 meters. So shrinking the amount of area I was doing a Heightmap bake for increased the pixel resolution. To my dismay though, it still had that stair stepping in the same places, which meant it wasn't a resolution problem. I should also mention that because I needed two displacement maps of the level to make things work for on top of the large rock features and under them, I was using the RGB Displacement Map compression settings in Unreal that allow for multiple color channels, and which I thought should work just fine for Displacement Maps like this. I was also always saving the images in 16 bit, rather than 8 bit.

    So after that I thought it might be something with the actual way it was rendering in Blender, and when I looked at the texture, I noticed that it had that banding in the same place as what's seen in unreal. It's very faint and difficult to see, but if you move this image around a bit while looking at it, you can start to see the banding going on where it looks like there are flat surfaces going up the hill instead of a smooth gradient:



    So after discovering this I started trying all kinds of different things in Blender to see if I could get rid of the banding, using things like dithering, which only added noise to the displacement in Unreal, but still had the banding clearly visible. I also tried blurring the texture a bit, which did help, but then all the details get lost and it still has banding, even though it's less pronounced. So at this point I had tried pretty much everything I could think of but to no avail, the banding was still there. Then as a fluke, I was messing around with different things in Unreal, and I tried using the HDR compression settings and all of a sudden, everything magically worked !

    As far as I can tell, the reason things weren't working before is that the RGB Displacement compression setting takes the texture down to 8 bits instead of leaving it at 16 bits, while the HDR setting leaves it as 16 bits. The really weird thing though is that, with the HDR setting, it still has the banding going on before the texture gets compressed, and it's only after you apply the compression that the banding goes away and it's using the values that are actually in the texture instead of some kind of compressed texture, which seems quite opposite of what you would think it should be. It's also quite interesting that the banding that can be seen in the texture in the image above isn't actually affecting anything like it seems it should have been, even though it's in the exact same spot as where the banding was in Unreal. So there are a lot of things with it that I don't understand why it's the way it is and it's kind of a Duct Tape solution in the end, but at least it works

    So just kind of an interesting story of compression in Unreal and if you want to have an RGB image for Displacement in what I think is also 16 bit, the HDR compression seems to be the only one that actually does this. It's possible the displacement compression that says 8/16 bit would work as well, but I haven't been able to get it show anything but a white image when I try it, whether or not I'm using an RGB image with three channels, or a Black and White image with only one channel. So I'm not sure how that one actually works.



    There were a few other things that happened as well in this update. One was the Aspen bark texture I was working on a few updates ago is finished. Here it is in Blender and Unreal. I was going for kind of a damaged look where it seemed like some of the bark was starting to being ripped from something pushing out from within, like I've seen in some photos:











    With that, I also had an idea for rearranging the Bark texture atlases so that ones that have more unique damage to them, like that one above and another one I had made, appear less often than a couple of the others that I'm going to be re-sculpting that won't have any damage on them. This way the forest should feel less like things are repeating and damaged ones like above shouldn't ever be right near each other.



    Another thing that happened is after doing that test with all the trees last update, I started getting into a bit of performance profiling. After playing with things a bit, i think I found the main culprit for the strange changes in performance when the sun is at a low angle versus pointing straight down. Apparently to do the shadows, the light source has a depth pass that is basically the same as the camera's depth pass, only it's from the light source's viewpoint. I think this is then used to help produce the shadows later on in the rendering pipeline. In order to do this though, the computer has to calculate where all the different model's triangles are in the scene, but do it from the light's perspective instead of the player's. I think also if there is transparency on those triangles from the material setting, it also has to calculate triangles through other triangles that are seen because parts of the material are transparent. So when the sun is down low, there are a lot more triangles being processed because the light source is looking through lots of meshes all at once. Then the higher the sun gets in the sky, it's looking through fewer and fewer meshes, so there aren't as many triangles being calculated. Here are a few images of the tests I did. These first two are of the shadows at their highest quality settings and you can see how both the amount of triangles and the time it takes to do the shadow depth pass both skyrocket at sunrise versus midday, while everything else stays pretty much the same: (This is with shadows on their best settings)

    Afternoon


    Morning



    The same thing is happening with Medium Quality Shadows, just not as big of a jump because there aren't as many shadow fulstrums being used, or rather times the shadow gets calculated:

    Afternoon


    Morning


    The interesting thing about this is that I tried putting the cull distance for the foliage, which is the distance from the player that the foliage stops being rendered, at a really small amount, so it was only the trees right next to the player that were still being rendered. In the end it didn't actually have any effect on performance. So to me that means that it's only the vegetation right next to the player that's causing the really low performance, which is both a good thing and a bad thing. It's a good thing because it means that having the whole map populated by trees isn't going to be a big issue. It's a bad thing though because it means that really all I can do to have better performance is to not do things super dense. I wasn't planning on that anyway, but it does mean I'll have to be careful of how dense the vegetation gets.



    As part of that, I also added a bunch of options for the shadows in the options menu, so people will be able to decide what things they want on or off instead of it being decided for them by having only one slider. The smaller Aspen bushes also having LODs on them now, which helped more than I thought it would with performance. Since they were being culled if the camera was far enough away from them, I didn't think they would need them, but I guess they still did. It actually helped with them staying more visible in the distance as well because I was able to add a slightly changed material for the ones in the distance that wasn't as transparent, which made Unreal keep showing pixels from them longer, instead of just culling them because they weren't contributing to the view enough.



    A rather interesting thing that happened that made me go on kind of a rabbit hole adventure was that I had run into a blog post or something about the MineCraft developers having to create a system where, if there was an old save file from a previous game update, they had to make a way for the computer to look at any of that data in the save, then transfer that data to the way it was currently being used in the new game update. I wasn't completely sure what they were talking about, but thought it was kind of neat, and moved on to something else. Then just like two weeks later, I started working on adding those options for the shadows and a few other things, and lo and behold, I realize I actually am going to need to figure out a way to take old save files and make them compatible with the new options I added, as well as make it so that the shadow quality setting I took away doesn't run at start up and override the things I added when it gets loaded from an old save file. This all kind of led into changing the way a lot of the code worked for saving and loading, and I had to change a bunch of things to make things easier. I'll have to see over the next updates if things work, but it seems like it should, and if it does I might write something about it.

    So that was a neat thing that the blog article I ran into just a couple weeks before kind of gave me a place to start when I realized I would need to do that too.



    I guess that's everything for this update. Until the next one
    Last edited by ArtOfLight; 01-22-2019, 01:53 PM.

    Leave a comment:


  • replied
    Here are the things about the landscape mentioned above for anyone interested in that.

    The landscape I was working with from my previous update, where precut tiles with a high density of polygons were projected on to a sculpted landscape, then decimated afterwards to bring the polycount back down, ended up not working in the end because it wasn't really able to pick up the smaller details of the sculpt when I added the path into the sculpt. It was mainly the way the path can kind of cut into the ground a little bit from being walked on all the time. So that meant having to go back to using the sculpted landscape where I was able to sculpt certain areas like the path with a finer density of triangles and still export it that way. The downside of this though was that the edges of each tile were all jagged because of the way the Dynamic Topology mode in Blender that creates geometry as you're sculpting works only with triangles. So the edges of each tile looked like this:





    The problem with that became apparent in Unreal when I used the automatic LOD generator to create the LODs for each tile. When it creates the LODs at the really low amount of polygons, it takes away all of those triangles and leaves a somewhat straight line, but one that is a bit wavy. So you end up with lots of holes between tiles that are quite visible. So to fix that I ended up using the knife tool in Blender to cut actual straight lines through those triangles for each tile edge:





    That way the edges would still be right up next to each other when the LODs were made.

    To do any sculpting work, you then just recombine the tiles you're working on, do your sculpt work, cut the triangles that changed while sculpting, then separate the tiles again.

    This ended up working quite well in the end and really combined the best of both the projected landscape, which had straight edges for each tile, and therefore straight lines for the LODs, and the sculpted landscape, which could have small details in specific areas.

    The other really great thing I tried with it was to do custom settings for each of the generated LOD meshes in Unreal. It takes more time to set up, since you have to set things manually, but with the straight lines on each tile, you can get away with taking down the triangles in the mesh by very large amounts and also have it change to those LODs a lot closer to the camera than with the automatic LOD generation. This helped quite a bit because I was able to have the first LOD go down by 33% of the original mesh, then the next one down to 6%, and the last one down to 1.5%, or only 4,500 triangles for a mesh that's originally around 300,000 triangles. This really cuts down on the amount of triangles being rendered for something that isn't really seen much, which allows for adding more things that are seen to the game. You also can't even tell when the meshes change either.

    One really nice thing about all of it is I can also do a separate material instance that only mixes between basic colors,instead of mixing between all the Diffuse, Normal, etc. ground textures. So the further away tiles have a lot fewer instructions. Here is a view of the shader complexity to see that, where the darker green has more instructions being processed:





    Since the LODs reduce the amount of triangles so heavily, there is also not much overdraw from triangles occupying the same pixel and therefore rendering the same pixel over and over again:





    Also here is a view that shows the LOD meshes where white is LOD 0, red is LOD 1, green LOD 2, and blue LOD 3:





    The last thing that needed solved after all of that was to do the collision mesh for each tile. With the way Unreal does the LOD generation, you don't have control over how many triangles it takes away in different areas, so the path was basically being taken away completely for the collision mesh. To solve that, I just used Blender's decimate modifier with the vertex group settings to control how much the path gets taken away, so it ends up like this:





    Then you just import that as one of the LODs on the landscape, choose to use that LOD for collision, and you have good collision again.

    I think that's everything of how the landscape is set up now. Hopefully it helps somebody out!

    Leave a comment:


  • replied
    Finally got the next update ready! I may have tried to do too many things at once for one update . I went ahead and did new game builds for this update as well: http://www.artoflightandmotion.com/downloads, so if you want to see some of the things I talk about below, you can try it out. One of the builds is with a normal amount of trees that I've been doing in previous updates, with a few large clumps of trees to get a sense of scale in areas, and the other one is with trees covering the whole map, which I talk about below.I also go into more of this below, but one thing to note before trying the one with a dense amount of trees is that it doesn't run on my laptop that has a GeForce 650m, but it does run well enough at around 30 - 60 fps onalmost the highest settings on my main computer that has a GTX 1060, which I hear is equivalent to a 980 or 970. So probably a 900 series graphics card and above should run after playing with the settings a bit and possibly the 800 series as well. Also, whatever equivalent AMD GPUs should run okay too, but I've not tested them. So just to let people know, the test with lots of trees isn't going to be playable on all computers.

    A lot of the time for this update was spent working on the landscape some more.I kept having all of these small problems that meant having to change the way I was doing the whole landscape, which took a while to do each time I had to change it, but in the end I figured out a way to get through each problem and the performance of the landscape is even quite a bit better than it was!I thought it could help someone out, so if anyone is interested in that, you can find a summary of everything I tried for it in the post that will be right below this one. I could be wrong, but in the end, I think doing the landscape this way might be the only way to have so many trees, with the seasons on them as well, and still have the game be playable on a mid range GPU.So it's really a big blessing to have figured out so much with the landscape.Here are some other things that I've been experimenting with since the last update:




    As I mentioned above, one important thing I tried is covering the whole landscape with trees, and I'm very happy to say that even with it covered in trees, it's still playable on my computer at 1920 x 1080 with almost everything at the highest settings. For the test, I added trees more densely than they will be in the game, and also added the undergrowth very densely in areas. I was planning on adding the undergrowth over the whole map, but it was taking several hours to add it to each landscape tile, because of it adding around 2 million bushes each time, and since the bushes are only rendered around 100 meters around the player, it didn't seem to be making any difference with performance each time I added them to a tile, so I stopped at around 10 million bushes. The final count for all the trees was around 1.3 mil.

    Now for the results of the test, the worst it seems to get is down to about 12 FPS during the winter, from the branches being transparent, and about 20 FPS during the summer and fall, butit seems to only be right when the sun comes up in the morning, but isn't quite visible, and the whole map is shadowed. Then as the sun keeps going up, the FPS go up as well, into the 30s or above. So there is definitely something I'll have to look into with that.For the most part though, performance is on average20s or abovewhen everything is on the highest settings, which seems quite good for how big of a landscape it is and how many trees and bushes are on it.I also don't even have the best graphics card you can get, and if someone had a better one, they would get even better performance.If the shadow qualityis turned down to medium, which turns off shadows for the foliage in the distance and makes the close shadows a little more blurry, the FPS goes quite a bit higher into the 30 - 40s and above as the worst it gets, which still looks good and is pretty playable. So really an exciting test with some good results! Here are some pictures of that, and a bit of fun covering the whole landscape in trees :
















































    There was someone who mentioned things felt a bit too tiled in the world, which is quite true, and although there isn't a whole lot I can do right now, because I haven't created all the other models, I tried experimenting with changing the density of the vegetation, making some areas really dense while others are more sparse, and trying to pay attention to how much light areas might get. So hopefully it feels less the same when walking around and in some of those pictures above. Those experiments can be seen easier in the game build without trees covering the whole landscape, if you go through that painting labeled Aspens.Here is an image that shows a bit of that:





    I also did a little experimenting with getting the look I've seen in some images of right before you enter an Aspen grove from a meadow or something like that, and there is a feel of the leaves almost being painted with the end bristles of a paintbrush. It just feels quite painterly with how the leaves look like they are in splotches. So I tried seeing if I could get that kind of feel and it seemed to turn out well. I wish they were a little more splotchy, but it's not too bad for all the limitations there are in a game:





    Another thing that can be seen easier in that game build without all the trees is I got the texture done for under the Aspen tree areas, using Blender to create it. I went with kind of a dried muddy look for the ground, with dead leaves and sticks laying everywhere. Here is how it looks in Unreal:


    I'll probably have to change the previous path texture I made to fit better with the Aspen areas, but this is the path going through the grove:





    With that, I’m happy to report that the idea of using a separate mesh for the path and stream beds does indeed work, but there is one Material setting to know about to get it to work called Dithered AA. The main problem in Unreal with trying to do transparency that fades out is you can't have nice shadows being casted onto the material as well. The only way to have those shadows is to use the Opacity Mask input in the material that's used for things like leaves to cut out the leaf, but the drawback to that is the surface can only being either completely opaue or completely transparent. Apparently a way to get around that though for when you want it to fade is to turn on Dither Opacity Mask in the Material settings:


    or do it manually with a function like this:
    https://www.youtube.com/watch?v=ieHpTG_P8Q0

    Here is how it looks up close on the path:


    There is a little bit of banding that occursfrom how it works, but it's not something that's very noticeable. One nice thing about using the separate mesh is I may be able to use tessellation on them without having much of a performance hit, since they are separate low poly meshes. That would be quite nice for having large rocks on the path, as forest paths tend to have at times.





    The billboard meshes for the last LOD on the trees are also in the game, which can be seen in those above images of all the trees covering the map . They really turned out quite well and you can't really tell when they transition very well. The only thing I haven't figured out yet is how to do the transition during the winter. Because of the way Unreal works, it makes alot of the branches completely transparent on the normal tree meshes as you get further away from them, then when it switches to the LOD boards, the tree becomes much more opaque all of a sudden. There are a few things I've tried for that, but so far they haven't worked very well yet. Thankfully it's only noticeable when you're going from a meadow type area into a tree area though, so it may not be too big of an issue in the end. Once the pine trees are in their too that don't lose their leaves, it will be even less noticeable.




    So all in all, it was an important update, and I know the art/game will still be playable even when everything is covered in foliage. There were also really a lot of neat ideas I had for doing different things on this update.I don't mean to make anyone feel uncomfortable, but I feel a bit like saying, "This update brought to you by God," haha, "without whose support, none of this would be possible." Really the whole game has been that way too with so many ideas for things that I know didn't come from my own ability to figure out.

    So at this point it's kind of an open slate of what I'll be working on next. I'll just be adding all those fun details to the Aspen areas, mainly just trying to create the Aspen area fully to figure out all the systems that will be needed for all the other areas. I may start working on some of the buildings too, which would be quite fun. So stay tuned
    Last edited by ArtOfLight; 11-03-2018, 10:38 PM.

    Leave a comment:


  • replied
    Next update is done! There were some things that came up, so I didn’t have as much to work on things as I usually do, but even so, there were still some important things that happened. I was actually going to do the update last week, saying how I had done some testing and decided to go with the Unreal landscape for the ground, since it seemed to be almost the same FPS as my own landscape, but then I tested the game on another computer, and decided I better do even more testing of things . So long story short, I’m actually going to go with my own landscape using Static Meshes, but I’m doing it differently than I was before. If it is helpful to anyone, here are the results of some of the testing I did that made me decide to go with my own landscape, and how I created it. I also didn’t update the builds this time since there isn’t really anything new to see yet.

    For the first test, I tried out using the landscape that can be made in Unreal using a Heightmap, and also tried using the new things that Epic had added to it since I last tried it. With that I was getting about 73 Frames Per Second, with everything on the highest settings and only having the landscape in the scene, which is about the same as what i was getting with my own landscape made in blender and imported into Unreal as separate models. Both were being limited from going any faster by the “Game” thread part of Unreal’s rendering.

    After that test I had thought that, since they were about the same FPS and it would be easier to work with in the end ,I might as well go with Unreal’s landscape. So after getting all of that done, and being just about ready to do an update, I then tested it on another computer that had a weaker GPU, but this time I got quite a large difference between my landscape and the Unreal landscape, where my own landscape was about 10 Frames Per Second better, I think it was. The thing about this though was that it was being limited by the “Draw” part of Unreal’s rendering, which is the part that gets all of the objects and various other things ready to send to the GPU. So if you’re being limited by that, it would partially have something to do with the amount of objects in the scene, which was true with the tests I did because the Unreal landscape had about 200 separate pieces to render, while mine had only 80 some, as well as a smaller triangle count. That gave me an idea that maybe if I did really large tiles, and only had maybe fifty of them, I could get even better performance than either option. So here is how I set things up in Blender. First I made one square tile that was subdivided a little bit just to give a bit of geometry to work with for vertex groups and things like that:



    Then I made a grid of 48 of these tiles altogether that are about 1.2 Km on each side. With that, there is also the actual model that is being sculpted on, to create the landscape:


    Then each of the 48 tiles are heavily subdivided even more and projected onto the sculpted landscape using a modifier that doesn’t ever get applied, so if there are any changes to the sculpted model, it will automatically update on the tiles.. You can see the faint outline of the tiles in this image:



    Doing it this way it picks up all the details of the landscape, but everything is still in a nice grid that will fit together with each other, and I can push and pull around the sculpted landscape without the actual grid of squares being moved around. After it’s projected, a decimate modifier is used to bring the polycount down, but still keep the shape of the landscape. Finally, there is a Data Transfer modifier that just transfers the vertex normals from the landscape to the very edge vertices of the tiles. This makes it so there isn’t any visible seam between the tiles. Altogether, the whole process is completely non-destructive and updates automatically with any changes made in the landscape sculpt, since only modifiers are used to change anything. Here are the different settings used:



    So now I have 48 tiles altogether in Unreal with all the quality settings set to maximum, and the results of testing them on the computer with the lesser GPU are that I get 48 FPS with being limited by the GPU at about 21 milliseconds for each frame, with only the 48 tiles in the scene, which is a little better than what I had with my previously made landscape. Then with only the Unreal landscape in the scene, I got 33 FPS and about 30ms on the GPU thread.

    On the other computer that has a better GPU, I get about 83 FPS with the tiles, while being limited by the Game thread at about 11.5ms per frame. Then with the Unreal landscape, it’s still at about 73 FPS, while still being limited by the Game thread at about 12ms. So the grid of tiles ended up being about 10 frames per second better with that computer, and about 15 with the other one! I’m not actually sure why it helped so much on the better computer, since as far as I know, the “Game” thread doesn’t have anything to do with rendering models, but for some reason it really helped quite a bit.

    So in the end, I decided that it would probably be best to go with the custom made tile grid. Even though it is going to be more difficult to work with, I think the extra FPS you get from it are worth it, and I’ll be able to use those extra frames to add other things that you notice a lot more. So that’s a little summary of the whole setup and how things turned out with it.




    A couple other ideas I tested and got working are that, irrelevant of which landscape I’m using, I think I’m going to try using a separate model for both the stream beds and the paths, instead of trying to do the texturing for those as part of the landscape. The main reason for doing it with the streams is that they can be quite different from each other with how sharp the edges are. Like with this picture of a meadow, the edges go straight down, which can’t really be done with just the landscape, but can be done when using a separate mesh:

    https://pixabay.com/en/brook-meadow-...tream-1031675/

    The other reason for doing it with both the path and the streams is that there can be a lot of variety with how the textures look, and it seems like it would be quite boring if it was all the same texture throughout the level. The problem is that if I was doing it with just the landscape, I wouldn’t be able to add very many textures, since you’re limited to only 11 textures in a material, and I need to use the textures for other things. I’ll be using texture atlases as well, but I would still run into that 11 texture limit. So doing it this way, I’ll really have a lot of freedom to do lots of different textures for the paths and the stream beds, while also freeing up space on the main landscape for other textures and things.

    To actually do it, all it takes is just creating another more rectangular grid model in Blender. Then you can create a bezier curve as a way to place the grid onto the landscape, by adding a curve modifier on the rectangular grid . After that, you just project the vertices of the rectangular grid onto the landscape, like I did with the 48 tiles, to make sure it follows the landscape in the up and down direction. As the last thing, I then just used the Data Transfer modifier again to transfer the vertex normals from the landscape onto the edges of the path or stream model, which makes the shading seamless between the transition. Here are the settings for the path. The stream is pretty much the same. I also added a decimate modifier, but I’m not sure if I’m going to keep that:




    Then on the edges, I’ll just use vertex colors with the height textures I’ll be making later to blend between the landscape and the path mesh, using transparency to do the blending. In the end, it will look and be almost the same as if I was blending between two different textures using only the Unreal landscape. I’ll still have a little bit of work to do when I make the final meshes to make sure the landscape doesn’t intersect it, but here is how the basic idea works out in Unreal:





    Something else I did on this update is I separated out the large rock features from the landscape grid of tiles. The main reason for doing this is, since I’m projecting the tiles on to the landscape only in the up and down direction, I can’t have any overhangs in order to do that. I also wouldn’t be able to have them with the Unreal landscape either, since you have to bake a Heightmap in order to create the landscape in Unreal. So they are separated now and will be ready to eventually create into final cliff faces and such. Here are some images of how that turned out:

    Only the landscape without Rock Features:


    Landscape with Rock Features:


    I also figured out how to get the transition between the landscape and the top of the rock features pretty much unnoticeable. There are a few that will need more work, but I’ll work on those when I’m working on the final models. For most of them, you really can’t tell at all:





    One last thing on this update is I also, almost, got another lower Aspen bark piece sculpted:




    Something I wanted to show on the previous update, but didn’t have room to show, was all the trees shown together in Blender, since I think all the types of trees are done now, and it’s just working on variants next. So here is one of each size of tree all finished, with wireframes:







    Another thing from the last update is a little bit about applying the leaves to the trees. In the end, I found the best way to do it was to create a bunch of small branches and bake those into a texture atlas. Then after putting the texture on planes, or maybe a plane and a few triangles that could change the shape a bit, I used them as almost kitbash pieces to create a large branch that looked good at all angles. Afterwards the large branch can be duplicated over and over again onto the tree using an instanced, or linked, model. Doing it this way, you can create nicely detailed branches, but you only have to create a few of them, and if you need to change something on one of them, all the duplicates update as well. Here are some screenshots of the large branches I made for the medium sized tree with a height between the saplings and the full grown trees:







    One last thing is I also got the explanation of how the seasons work to the point of starting to explain how to create the Unreal materials to create the final effect. So slowly but surely, it will be done eventually

    The main things I’ll be doing for the next update are creating the texture for the landscape to use under the aspen trees, making the flat plane mesh and textures to use as the last LOD for the Aspens, and also then putting the trees on the whole landscape. After that, I should be able to start adding small details and fleshing out the game world much more. So that will certainly be exciting!

    Leave a comment:


  • replied
    Next update is ready! I thought I would do one sooner than normal this time, otherwise it would have gotten quite lengthy again . The biggest things in this update are that I got two more stages of Aspen growth done. It’s really starting to feel even more like an Aspen grove and there is definitely a lot of potential with all of it. I updated the game builds here if anyone had wanted to see it: http://www.artoflightandmotion.com/downloads. It’s amazing how much having the Aspens with leaves only on the top add to the scene and how it changes the lighting. Without the leaves on the lower areas, you get all of these interesting light shafts coming through to the forest floor and makes the daytime lighting much more interesting and pretty. Before, when it was just the other trees that were full of leaves, during the day, you kind of just have these circles of shadows at the bottom of each tree and was a little bit boring, but with having these other trees, there are a lot of different shapes that are formed and you have light hitting the bark everywhere, which makes it more visually interesting. Just a neat little thing I hadn’t thought about before that it actually adds a lot to a grove to have the leaves only at the top.

    The interesting part is going to be placing everything in the level in a way that feels natural, and later on, also keeping all the trees and different biomes feeling cohesive together. I have pretty clear ideas for how certain areas will look, but the rest of the areas I’m not completely sure about. So without further ado, here is a video of being in the groves while changing the lighting and just looking at how everything feels so far. The first grove is of the one that has the teleporter in it, where I added a few boxes that start to give an idea of the house that will be there. The second part is of a different area that tries to give an idea of what the Aspens will feel like surrounded by other trees in a forest:


    https://youtu.be/HuMh2h9wDLU




    Probably one of the most exciting things that happened with the project is something that actually happened last update, but there were already so many things to talk about, I thought I would share it with this one. What happened was there was an old friend who was upgrading to a new computer and gave me his old one! Even though it’s pretty old, it’s still a pretty nice computer; one of the old large Mac Pro computers with Xeon processors and 12 cores, which is better than the newer laptop I was using. So I was able to upgrade it with a new graphics card and everything is working quite well. My laptop I was using was really starting to have a hard time working in Unreal, so it was really an incredible blessing and intervention by God that came at just the right time; right before I started adding all this foliage and right before I’ll be putting the foliage on the landscape. The friend who gave it to me didn’t even know about any of the difficulties with the game! He had just been feeling God wanted Him to get a new computer and that he was supposed to give me the old one. I should be able to finish out working on the entire game with it as well!


    I also figured out what was wrong with the Distance Fields creating black splotches on the landscape. I realized I needed to turn on double sided distance fields since they aren’t enclosed meshes, and that fixed all the errors. For now, I just turned it on for the ones that have trees under them, since I have to do them each one at a time, and I don’t know for sure yet if I’ve figured out the best way of doing the landscape. So I didn’t want to spend the time yet.




    I had ideas for finishing another poem too that’s in the game. I almost had it done on the previous update, but not quite. You can see it here too:

    What is true worth?

    People’s opinions can give worth for a season, but people’s opinions change in time,
    what was once popular in one season, matters little in the next,
    and all that is left is the wondering of how worthwhile any of it ever was to begin with.
    To say that Van Gogh was once unpopular in his time would be an understatement,
    yet his worth changed when he was no more,
    and may change again in a generation not yet born.



    Could it be the number of people that love you?
    But do they love you or the image they have created of you,
    and will they still love you when you are no more who they want you to be?
    As the curtain fades, what is left of the crowd, the worth?
    If they don’t still love you, how much were you truly worth?
    Will they sit with you as you die?



    Some would say that worth is power,
    the ability to be above and control others.
    But what happens if you lose power over one,
    or someone else controls more pawns than you?

    To live by a currency of people is to have a worth that is always changing,
    to be worth less because others are worth more,
    and to live in slavery to others,
    because even one has the power to change your worth forever.

    And so you might control an entire atom called earth.
    In a universe full of atoms,
    you still only have an atom’s worth of worth.



    One could say that they’re worth something because they made it in life,
    and found success in the things they did.
    The belief that you were good enough to make it,
    and worth more because others couldn’t.

    But what has been gained by that success?
    Are you not the same person you were before?

    Though it may feel good to look down on others,
    are we truly better,
    or are they just a mask,
    used to hide the things we look down on in ourselves.

    And though you may succeed in some things,
    you’ll fail in others,
    and others will look down on you,
    when they were good enough in the things you weren’t.

    So is there really any worth in the end?

    And if that’s the measure of you’re worth,
    then how much are you worth after bankruptcy?



    So what is true worth, if all the worth in life can shift in the sands of time,
    ebbing and flowing in the waters of life?
    Is there any hope?

    Yet I find, not just a person, but a God who loved me for who I am,
    that before I could ever even try to be good enough for Him,
    I was loved and worth so much,
    He put me aside and was tortured in my place.

    To be worth everything when you have nothing,
    this is true worth.

    And though the world’s currency of value will always change,
    this is a worth that stays the same,
    condition-less love that will remain.

    It’s a worth that’s just about you, not what you do,
    nor the monument of your own greatness,
    and the way that people look at you.

    A worth not based on quantity,
    not tied to a currency of value,
    and infinitely more valuable than any other,
    because you don’t have to attain it,
    or have anything to have it.

    It is freely given,
    without charge.

    Rich or poor, in sickness or in health, failures and success,
    that love will always be the same;
    a worth that remains, a love that does not change.

    True love, true worth,
    will I ever be the same?


    To give some background of the poem, it’s really the story of my own quest, if you will , of trying to find worth, and in the end finding it in my relationship with Jesus, and really in His unconditional love. It’s that unconditional part that is really the key thing that makes His love so life changing. The love between spouses, friends and family can very much be a picture of His unconditional love at times, but it’s still tainted here on earth, and you can’t really find a love that will always be truly free. His love is like the pure form of what can be seen on earth, a love that is truly without conditions and so full of acceptance of just you. Even if you were to become the most evil person on earth, or the poorest person on earth, His love for you would not change because it’s all about you and the person He sees inside, and that’s just such a special thing that can be so life changing.

    In many ways, the poem is really the story of how we try so hard on the earth to try and get people to love us and feel like we mean something and are worth something, but even if you gain that worth, you can gain so much in the world and yet have so little in the end. Yet with unconditional love and His love, you don’t have to do anything to gain it or attain it, He just loves you. That’s what makes His love so special; that it is completely free. It’s a worth that’s real and solid and doesn’t change because it’s so much about just us, instead of what we’re able to do. With first hand knowledge, I’ve experienced both in my life, and I can say that there is no comparison to His love that is so completely without conditions and just so full and un-lacking. It’s even a bit scary because you have no control over how much He loves you, and there’s nothing you can do to change it, it can only be humbly accepted. A very humbling love.

    So anyway, that’s some background of the poem and I hope you enjoyed it . It’s also similar to the image of the old man on my website, but talks about things in a different way.




    For the next update, I’ll work on one of the bottoms of the Aspen bark, and also be experimenting with the landscape, trying to see what the best option is performance wise. The real difficulty is there will be so many different types of trees and areas by the end that will need different textures for the ground, that I think I’m going to have to figure out a way to do a mixture of static meshes that are separate from the landscape, as well as have a large landscape that has the materials for things like streams and paths that need to be the same throughout the world.

    Leave a comment:


  • replied
    Finally got this done . Here is the post about the Box audio bounds for Fmod mentioned above:


    I didn’t know if anyone might need this or not, but as mentioned above, I was able to get a a box audio bounds working for Fmod, and if anyone else is struggling with making a box bounds with a Minimum bounds inside of it, for audio or anything else, I thought I could share what I got working to help out. It’s one of those things that doesn’t look like much when you’ve figured all of it out, but takes a lot of work to think through and get working.


    So here are some images and a little explanation of how it works.
    First, here is the image again of the Box inside of the world with a large box that is the Maximum bounds of the audio, or the farthest the audio reaches, and the smaller box being the Minimum bounds, or the point where the audio would be at full volume and envelope the player:



    The first thing to do was to get the player’s position, so we know where the player is in relation to the box, and convert it into the Box’s local transform. You’ll understand why in the image after this, but this was an important thing that was a little tricky to figure out. Basically I just created an arrow in the blueprint with the Box bounds, then each frame that arrow’s position gets set to the player’s position in world space. Then when you access that arrow’s local position, you know have the player’s position, but in the Box’s Local space. Here the nodes that did that:



    Now to use that, here is an image that shows the full node network that calculates how far into the Max bounds the player is, and how close they are to the Min Bounds. This is where putting the player’s position into the box’s Local space is used. It’s much easier to see it node by node then trying to explain it all verbally, so there are explanations on each node that describe how it works. You may have to open it in a new tab in order to see the them.

    To summarize what it does, it determines how close the player is to the Minimum bounds on each axis of the box, then outputs a value between 0 and 1, with 0 being when the player is at the edge of the Maximum bounds and 1 being when the player is at the edge of the Minimum bounds:



    Then to use that, you can just hook it up to an Fmod “Set Parameter” function, one for the audio volume and another one for the audio envelope amount, and also clamp the player position value from before between 0 and 1:



    Then in Fmod, you just set up two parameters on your sound, one on the master volume, going from 0 to 1, equaling -00 to 0:



    and another on the Minimum Extent knob of the attenuation setting, going from 0 to 1, equaling 0 to 360 degrees. The button above should be set to User instead of Auto, too:




    A couple more things to do is, since we’re using a custom envelope calculation that gets applied to the Min Extent parameter, we need to set the Fmod Sound Size to 0 when the player enters the box:



    This keeps Fmod from calculating how much the sound envelopes the player, and let’s us use our own calculations with the Min Extent.

    Here is the parameter in Fmod:



    The curve looks a bit strange because Fmod does some strange things with all the values on the graph, so in order to get a linear value where setting the parameter to say 400 in Unreal, equals 400 in Fmod, you have to have the line curved like that.


    The other last thing to do is to set the normal Fmod Sphere bounds to be bigger than the Box bounds, pictured in this image:



    This will make Fmod know that the player is inside of the sound and to play the sound through the speakers.


    So altogether, the player enters the Box volume and the Fmod Sphere volume, then the envelope values and attenuation, or volume, get controlled by custom calculations instead of Fmod’s calculations.


    That should be everything. The box should now work as an audio bounds, with the volume and envelope amount working the same as if it was one of Fmod’s normal Sphere audio bounds.

    Leave a comment:


  • replied
    The next part of the game is done! There are a lot of things to mention on this update and I added new game builds here: http://www.artoflightandmotion.com/downloads


    First thing is I had ideas for another poem, as well as a few others that aren’t quite done yet. This poem is all about the answer, that I’ve found at least, for the purpose of life on earth, and very much goes with the rest of the poems. It was too long to fit on the back of a teleporter, so It’s inside the game on the floor of the teleroom for now, under the teleporter marked Aspen and also here:

    What is the purpose of life on Earth?

    To find the answer, we must go back to the beginning,
    in the choice of Adam and Eve,
    and being able to chose what we think is right and wrong.

    For when God made man, man lived by His law of love,
    but He is a good God, who in His love,
    is not going to force anyone to be with Him.

    So He created a world where people could choose
    what they thought was right,
    and how they want to live their lives.

    And it isn’t about what we build or doing great things,
    for the greatest of things on earth lie in piles of dirt as the years go on,
    but it’s being able to choose who we want to be,
    the heart of who we are.

    And this choice is laid out each day in everything we do,
    hidden in the why we do the things we do.

    It’s a choice between taking or giving,
    living for ourselves or living for others,
    to serve or be served.
    A choice between God’s way of love,
    or using others to our own ends.



    But when we chose love or evil,
    what do we really chose in the end?
    What way of life do we want?

    People always wonder,
    ”How can a good and loving God ever create a place like hell?”

    But that is the real choice we make,
    and it exists because we choose to be there.
    By doing evil to someone,
    we choose to be a part of a world that is evil.

    And if we don't want goodness,
    and He does not want to force us to be good,
    and allow us to choose who we want to be,
    then all that is left to have is evil.

    Isn't it good to let people have what they want?

    For we reap what we sow,
    and if we sow evil, then we will be given evil,
    and if we sow love, then we are given love.

    And if we only want to do evil,
    in all the ways we don’t care about others,
    would we ever want to live in a place of only doing good?
    Would we want to serve others forever?

    And so each day, by our actions and words,
    we choose to live in heaven or hell.
    For that is hell,
    to live in a world where no one cares about each other.



    Such is the purpose of the Earth,
    to live for 80 years,
    making and experiencing our choices each day,
    between living in heaven or living in hell,
    living in love or living for ourselves,
    and by God’s grace, we are saved,
    from the evil we chose to be.






    I don’t even remember what I was looking up when I ran across it, just one of those times of randomly running across a video while looking for something else, but part of the poem came from a video I had seen just recently of a man in Africa who had died for 3 days, and was actually in the mortuary, then miraculously came back to life. I had actually seen some of the video a number of years ago, but I hadn’t seen him talking about what he experienced while dead. If I remember right from the video I had seen, they had even gotten to the stage of completely replacing all the blood with formaldehyde to preserve his body, so he was definitely completely dead. That’s why at the end of the video below, where they show the actual footage of him coming back to life that they caught on film while they were just recording everyone mourning and praying around him, he is kind of dazed and staggering, because the formaldehyde was still in him when he just all of a sudden woke up, and it was miraculously being replaced by blood again over the course of a few minutes, I think it was.

    Whether you believe the story or not, there is a part of this video talking about what he experienced while dead, where an angel was telling him about reaping what you sow, and that, if he was really going to die at this point in his life, he wouldn’t make it to heaven because he had not forgiven his wife, and that because of that, God would not forgive him. I thought that whole concept would actually fit quite well in the poem, so that’s where the couple lines about reaping what you sow came from. It’s actually something in the Bible as well, in Galations chapter 6, verses 7 and 8. Here is the video:
    https://www.youtube.com/watch?v=i_EHdydFUkw





    The next thing is, I got the bark for one of the bottom pieces of the Aspen tree re-sculpted and in the game. It’s really a big difference from what it was like before. I think the main problem with how it was before is I had tried following the reference image too closely and the whole thing just looked too perfect in the end. With this new one, I tried leaving things more messy and really focused on the silhouette that was being made. It turned out a lot better. It also helps to have more practice . Here it is in Blender:



    and here it is in Unreal:








    The other large thing was getting another taller sapling done. I had to add more leaf cluster types on my main texture in order to do it, so it took a while to make, full of experimenting with different alpha cards and branches, seeing what works and what doesn’t. I had textures that work for being under the leaves, like with the trees, and ones for above the leaves with the small saplings, but nothing for being at eye level. I’m thinking that it will work well for meadowy clearing type areas in the middle of the Aspen grove, and just areas that get a little more light. The next one I’ll be working on is a mid range tree between the tall ones and the saplings that can go at the edges of a grove, where there is more sun, and I’ll also be working on the Aspens that have leaves only on the top.

    Here are some images of how the sapling looks in Blender:









    and Unreal:










    There were also some small tweaks here and there, but they really made a big difference in how everything looks. The first tweak was I made the branches a little thicker. During the winter, most of the branches on the alpha cards with the leaves were disappearing because of being too thin. So I thickened them up and it really helps. Here is how it looks now:






    The other thing was the normal maps weren’t working properly on the leaves, and they looked pretty flat. So I got those working correctly again, and also added more texture to the leaves and increased the strength of the normal map, so they’re looking quite a bit better now and feel more 3D. Here is how those look:




    Someone had an idea to add Distance Field Ambient Occlusion to the game, and I was able to get that working. It really adds a lot to the lighting in the game. It makes a nice contrast between the lit and dark areas and also adds more variation to the shadowed areas. There seems to be a glitch with my landscape pieces where it makes black splotches everywhere, so I had to turn it off for now on the landscape, but I have it on all the plants. Thanks again to Dartanlla for the idea. Here are some images of that:


















    One last tweak was I had a simple idea for adding a bit of randomization to when the transitions start on each tree, so now everything changes at different times and feels much better and more natural. You can see it easiest in the Fall transition:








    There were a few other small things here and there that someone had ideas for that I changed as well.




    Another thing is the Fmod sound system doesn’t have a way to do rectangle audio zones, which would really help for streams and some of the areas with trees. I was finally able to get one working with the blueprints though, and that is what is being used in the new area I added trees to for testing purposes. Since it might be helpful to someone, I thought I would do a small explanation of it in the next few days too. You can faintly see the large box as well as the small box inside of the large box, which represent the audio zone, in this image:



    This area can be found by going through the Aspen teleporter, then going in the opposite direction of the cliff, until you see the mountain pictured in the image below. The new area is then behind that:






    One more thing is, I got quite a bit done on the explanation of how the seasons work and put pictures with almost everything I have so far. I had to rearrange things and rewrite a lot of things when I started adding pictures, but hopefully now someone will be able to follow along well enough to recreate it. I almost have everything done up to the point of creating the Unreal material. The explanation can be found here: https://www.dropbox.com/sh/v03321o6y...B50CLCYga?dl=0




    So yeah, there is a lot that happened since the last update . Next thing is to make that middle height Aspen, and Aspen with leaves only on the top mentioned earlier. I would have had the mid height one done on this update, but then I realized I really needed to see how much space I would need on the leaves texture for branches that were at eye level first, since they are more visible, so I should be able to have those other trees done in the next update. I’ll also try to get another bark sculpt done. After that, I think it will be on to putting the trees over the whole level, which could take a little while, because I’m still not completely sure what the best method for doing the landscape is, so there will be a lot of experimenting.

    Thanks for looking and I hope you enjoy what's been made of the artwork so far!
    Last edited by ArtOfLight; 06-10-2018, 09:28 AM.

    Leave a comment:


  • replied
    Hi, thanks for the encouragement and thanks for trying it out! I’m glad you enjoyed playing it! I'm glad that both the piano and guitar music really added something to it too. I didn’t know how well the music would work in the game, or if it would be enjoyable to other people or not, so that’s good that it’s enjoyable. I’ve enjoyed listening to it, but I didn’t know if anyone else would



    Yeah, it would be pretty neat to have some puzzles to solve and have the stuff from the website in there too. That's great you enjoyed reading everything on there! I've actually been thinking of doing something similar to what you mentioned. I’ve had ideas for kind of a story that could be in the game where you’re playing as a more elderly person and each teleporter would teleport into a house that person had owned during their life, or where some event had happened. I thought there could maybe be a letter or something in the house with a date on it that the player could find, and with already being able to go through time, when you go to that date, the house could change to the way it was at that date, and there would be puzzles to solve that would reveal more of the story, both in the house and out in the world. Kind of the character’s, and maybe the player’s, heart opening again as you go through the past and all of the things that happened in the character’s life.

    I don’t know how all the details would work, and I would have to write some kind of storyline that would incorporate all those things on my website and the various poems in the game, but it seems like it could be a good direction to go in eventually and seems like it has a lot of potential at least. There could be a way to add a few books in the game too that are readable and could have a few short stories or something that incorporated those ideas and had subjects about the heart opening as their underlying message. I’ll have to see what kinds of ideas come for things as time goes on.




    That’s a good idea about the Distance Field Ambient Occlusion; I haven’t tried that yet even though I had seen stuff about it. I’ll have to see if I can get it working. It does seem like it would help quite a bit for when things are in the shade. Thanks for the idea

    Leave a comment:


  • replied
    Hello, I tried out your game and I really enjoyed walking around listening to the piano and guitar music. I think mixing the music with the art is very powerful. Not sure what your plans are for the game, but I think it would be interesting to have some kind of puzzle to solve inside each one of the portals. The puzzles could tie into the theme and message of the game. I enjoyed reading all of the content on your website and feel like it could be a really interesting game if you were able to get more of those ideas into the game in some kind of interactive way. Not sure how to do that exactly, but I think it could be kewl.

    Are you using Distance Field Ambient Occlusion? It looked like you might not be. If you enable it, I think it would add a lot of dimension to your trees.

    https://docs.unrealengine.com/en-us/...bientOcclusion

    Great project! Keep up the good work!

    Leave a comment:


  • replied
    Oh, wow, thanks a lot for trying everything so thoroughly! I’m glad that bug I found on the bug tracker is what was happening.


    That’s good you don’t notice the bark repeating too much and you can’t tell how the textures blend together. In terms of the bark, I think they might be one of the hardest trees to make, with how distinctive the “eyes” are and how much you would notice if it’s the same texture used over and over again. So that’s good everything I’ve done so far seems to be working. You’re right, it is a Poplar or Populus. I think the common name for one of the variants is also called a Birch tree and another variant is also a Quaking Aspen.


    With the music, I agree, that would totally destroy the mood of the game to have Marylin Mansion all of a sudden play , but yeah, I probably won’t ever have the ability to add your own music into the game. I wouldn’t really know where to start coding something like that anyway. For the note in the game though, it was just about creating a playlist of the songs that are already in the game, like the piano and guitar music. I wasn’t sure how much music might be in the game eventually, and if there is a lot, and people start to have favorite tracks they enjoy listening to, I thought I could add the ability to create their own custom playlist that would just be on their computer. Since I don’t have that functionality created yet though, and I don’t know for sure if it will be needed yet, I thought I could just add the playlist manually in the next build, then it would be there for them, but no one else would have to use it. So hopefully that makes sense, that it’s just a playlist of the music I have recorded. I’ll try to word that differently in the game so it isn’t as confusing. That’s nice to know the music that’s in there fits well with the game.


    That’s great the teleporter room is looking nice! Sorry that was a bit difficult to find the Aspen teleporter. My current plan is to try and do something with colored floor tiles, where each teleporter would have a different color of tiles under it, in order to identify each teleporter. Kind of the way that the first Mirror’s Edge game used a lot of color to lead the player. If that’s not enough, I might try to add a title under each painting that describes what that area is about. Since it’s not implemented yet though, I just added “Aspen” under that one teleporter. Maybe for now if I put those words up in the air, people would be able to find it better.


    That’s wonderful you didn’t run into any bugs. I thought there could be some if someone played it long enough, but that’s great you didn’t find any. That’s fun that the wind started to feel cold. It took awhile to try and make the seasons feel and sound distinct from each other, so I’m glad to know it worked


    Yes, the materials should be able to adapt to other plants easily. It definitely does make things interesting having to make the whole world able to change seasons , and yes, I’ll be adding that functionality to everything in the world. For the plants, right now, I just use black and white mask textures to create the seasonal transitions, and I’ll just have to create unique ones for each plant in order to have them transition. What makes them actually change with the season is then just three float values in a parameter collection that can be used with any material. The same goes for the wind, it just uses vertex colors to tell the material where to apply three different effects, one for the leaves, one for the overall tree swaying, and one for the branches going up and down. Using those vertex colors, I can then decide how much of each effect to use on each type of tree and each part of the tree. So they both should be pretty versatile in the end.


    That would be awesome to be able to use your material; it would be very useful! Thanks a lot for being willing to do that! It would definitely help save time to not have to start from nothing when I go to do more with the landscape. I’m not sure when I’ll be adding the rain, but it is on my list of things to do. It will probably be sometime after I’ve played around with automatically putting the trees on the landscape.


    Thanks again for all of your suggestions; I really appreciate you trying it out so thoroughly! I’ll add those issues you noticed into the next update.



    Leave a comment:


  • replied
    I removed the .ini inside the folder with a space, and it works, thanks!

    Patterns on bark material are well blended, most of AAA don't go this far. Where I live these trees are everywhere around the river so I'm used to them and their "eyes" on the bark (if I'm right aspen is a poplar (name found with google translation) or populus). This eye shape is common, but each time the shape changes and you managed to recreate this. Other patterns are less noticeable on real trees so here again your shader simulates well.

    I saw your note about adding songs and I think you shouldn't include external music that people may request. Musics you have put fit well because you choosed yourself. Give possibility to player to choose his own playlist is a better option second me. I imagine if I choose a Marylin Mansion song in the playlist, it would ruin all the beauty of the moment (even if I don't press play, I know it is still here against my will, waiting under the shadow of a widget ...)
    If you have no time for implementing this you'd rather skip and focus on your next step.

    I love the teleport room with these all of a kind stained glasses and the general presentation (spinning teleport screen for example, or glass walls which give brightness) but it took me a while to figure out the right screen is the one with an inscription on the ground.

    I've played about half an hour and didn't see any bug.
    I felt I was really outside and with the wind noise I almost felt cold.
    Also the post process sharpening does a good job and is subtle as it should be.

    A last thing I'm wondering about is are you develloping your materials so you can readapt it easily, I mean will it be easy for you to implement an other tree specie that will react to wind the same way as aspens do? Another example with leaves vanishing at fall, that must be some kind of function I suppose, or linked to a material parameter collection? In fact I hope you will keep on this project and add new plants, rocks, devellop the level itself with flexibility. I have a material function for tesselated landscape which creates humidity then puddles on ground. When you will be adding rain effect, I'm glad to send it to you (it is controlled easily with 2 float variables) if it can be usefull (I will have to modify a bit since it handles also underwater aspect of landscape, there are no puddles underwater ).








    Leave a comment:


  • replied
    Hi, that’s all right, thanks for trying it out! Hmm, that is a very strange error. Everything seemed to be working all right on my computer, but after doing some digging, I think I may have found a bug report that has an answer to the error: https://issues.unrealengine.com/issue/UE-58013. After turning on “force all skinned meshes to recompute tangents” in one of my Unreal projects, like it says in the bug report, I tried playing my game again and got that same error you got. So this could be what’s happening.

    Just to give a summary of what to do to see if that’s what’s happening with you, try turning on hidden files, then going to the path: C:\Users\<Windows user name>\AppData\Local , and see if there is a folder there called “Unreal Engine.” I was a bit confused at first trying to find it, but you’ll want to look for the one WITH a space between “Unreal” and “Engine.” It seems to only get created when that recompute tangents option is turned on. The one without a space holds other files and is unrelated to the bug.

    If the folder with a space is there, try just temporarily moving it, and see if the game works. If it’s not there, I might try turning on that “force all skinned meshes to recompute tangents”
    in the project settings, then building it and you can see if that works, if you have the time . I’ll probably turn it on anyway in future builds, just so that error doesn’t happen mentioned in the bug report. Thanks again for letting me know about it!

    Leave a comment:


  • replied
    Hi !
    I've tried to play the game but it fails to launch, here is a picture of the error :



    Unfortunately I can't help you more with this message...

    Leave a comment:

Working...
X