The Heart Game

(ArtOfLight) #1

Even though this project isn’t strictly Blender related, and uses Unreal, I’ll be making all of the assets for the game in Blender, so I thought I would post it here as well in case any of it might help someone else making a game with Blender.

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.

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:

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 and 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 just always makes me so sad 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 only asked to know Him, but that’s another story :).

To get back to the main topic, 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.

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

Latest Screenshot or Video
Aspen bushes and other new features:

Teleport room:

Previous new feature videos can be found here:



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:

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:

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
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:

Story in the Artwork
See Story Overview in above folder.

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 :slight_smile:
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.


(ArtOfLight) #2

Just to give where the project is at, there is still some sculpting work to be done for the landscape, but it’s basically how it’s going to look in the final game. Next things I’ll be working on are adding more features to the music interface, and adding a basic day/night cycle. Eventually the sky will look better as well, but for now it’s just the sky that comes with Unreal. I’ll also be working on the ground texture.

(ArtOfLight) #3

The next update is done! Here is the video showing how it looks as well as some of the options I added for the music.

You can find the download for the game in the first post.

It took quite a bit longer than I expected to make the first ground texture that will be used for the pathways, but at least now I’ll have a system for creating the other ones that should make it go faster. The great thing was that I was able to create a seamless texture from scratch in Blender, so it should also make for a good base in creating the next textures. Here are how the models look in Blender:

I think for the next updates, the plan is to try to fully make one small area and get all the different systems like rain and wind working for that area. Then, as I’m making the other areas, I’ll have most everything worked out already. The next thing I’ll be working on is modeling one of the trees. I thought I would do the aspen or cherry blossom area first, so it will be one of those. I haven’t decided which area to work on first yet. I’ll probably try to do smaller chunks as well so there isn’t such a large amount of time between updates :wink:

(ArtOfLight) #4

I just wanted to give a small update on how the aspen tree is going. The first bark texture is sculpted and painted. It will be a bit higher resolution once it’s in the game.

With the aspen tree, since the bark is so distinctly different in different areas of the tree, I’m planning on doing three different sculpts for each type of bark, then combine them in a texture atlas and use vertex colors as masks when they are on the tree. That way I should be able to get a large amount of variation in each tree while still only using three sets of textures, but I’ll have to see how it goes… It will also help take away some of the tiling. The only other way I could think of to do them would be to do a different sculpt and painting for each tree, which would end up being quite a few more textures in the end. If anyone else has ideas for what they’ve done in this kind of situation, feel free to expound. :slight_smile: I may not use it for this tree, but it would be good to know for the future if there is a better way.

(ArtOfLight) #5

Next update is done! I have the second bark type sculpted and painted. I’ll show some other kinds of peeled bark when the other aspen trees are done. I also have the trunk in the game with the method of mixing the barks all figured out. I’m using a combination of the vertex groups and an image texture to do the masking. I think there are a couple things I’ll change in the sculpts, but at least everything is in there and working. I’ll update the download files later when I have a few more things done.


One thing I wanted to share that I thought could help somebody else, and I thought was pretty cool at least, is I figured out a way to be able to create two masking images in just one image channel. So with an image that has an alpha channel, I would be able to get a total of 8 masks instead of the normal 4. The way it’s done is by first filling the channel with a solid color that will be 50% grey when it’s used as a mask. This will split the image into two images. Just as a note, I guess probably something to do with color space, but in Krita, I had to use a luminance value of 25 instead of 50 to get a result of 50% when the channel is used as a mask in Unreal. Then you just use a value that’s above 50% grey for one mask, and below 50% grey for the other mask. You can see it below, but when in the editor, just subtract .5 which will make the grey and anything under it a value of 0 and anything above it 0 to .5. After this, clamp the values to cutoff what’s below 0, then multiply by 2, and voila the texture will be a value between 0 and 1. To use the other mask, you just invert the texture first, then follow the same steps. It wouldn’t work for everything because you basically have half the amount of histogram color values, but for using it as a mix between two different textures like I’m doing, I haven’t been able to tell any difference. It would also work well for blending things with vertex colors, since you could go beyond the 4 vertex color slots.

I’ve also been working on implementing all of the sun and moon calculations in Kleiner Bear’s complex day/night cycle seen here: When I’m done with that I’ll add a way to make it so the user can rotate the game’s compass to be able to change where the sun rises, change how long the day is, and make a way to change what latitude the environment is at, making for some interesting and varied sun rotations, like at the polar circle. It will also be nice that the lighting will be changing throughout the year instead of just the same lighting every day. I’m also planning on trying to implement a way for seasonal changes to occur with the vegetation depending on which season it is. I already have some ideas for doing that, but I’ll have to see how it goes.

(ArtOfLight) #6

The last bark sculpt is done! For this last sculpt I’m using it as kind of a kit-bash texture where I can use the vertex groups and an image mask to add or take away those black areas that the aspen bark has. It’s funny after doing this one to look back on that first sculpt I did and to see how undetailed it was, when at the time I thought it was looking nice. I suppose that’s what happens when you’re learning new things.:slight_smile: To show where it’s mixing, the circles on the image below go a little bit above where the mixing of textures is happening.

I also had an idea for the way the texture is UV mapped that almost completely takes away any signs of tiling, just by switching where the seams start. You can see how that looks in the two images below. The line on the side shows where the texture ends and repeats again. The idea was that at the point the texture would have started tiling going up the tree, the cut for the UV seam switches to being on the other side of the tree. So it basically rotates the texture so you see the part of the texture that would have been on the other side of the tree. I had only thought of doing this after I had done the sculpts and painting, so there is a barely visible seam, but it’s fairly high up the tree and can only be seen really close up to it. I circled the seam in the image below. Although, for the next tree type, I’ll hopefully be able to create the texture with that in mind and take away that seam.

There was one thing I found out that I thought I could share because it might be helpful to someone. I found out Blender works really well for creating Texture Atlases and being able to cut up textures automatically without having to go in an image editor every time something changes, cut it, then recombine it in the texture atlas. With the way I have it set up, it also automatically creates a 2, or however many pixels, padding or bleed edge around each texture so there aren’t any visible seams in the final model. It’s a bit of a strange workflow, but the results are really nice and makes having to change anything in one of the textures pretty simple.

The way it works is that I set up some rectangular planes that you can see in the image below, with one centimeter equaling one pixel in the final image. This way you know exactly where each pixel of the texture is going to be in the final image and makes things a bit easier when doing the padding around each texture that I talk about below. Each separate plane will equal one texture or a part of a texture in the final texture atlas.

Next you line up each of the model’s UVs with the texture you want assigned to that model. So with my bark textures that are 2048 x 8192, I want to split each one into two in order to recombine them and make a square texture of 4096x4096. To do that I set the UVs for the plane at the top left in the image above, to be the bottom half of my 2048 x 8192 texture, and the one right next to it on the right side to be the top half of that texture. Then I apply the texture onto the model using an emissive shader in the materials. To get the final texture, I just set up a camera set to Orthographic mode with the edges of the camera lined up with the edges of the large plane that represents the edges of the texture atlas. Then I just do a normal render of the models at whatever resolution I made the models to be, in this case 4096x4096, and turn off anti-aliasing so that the two pixel border around the edges talked about below won’t get blurred.

To get the two pixel padding, you just inset a new line of vertices 2 cm from the outer edge, or however much of a pixel padding you want to have, on all sides, but leave the UVs on top of each other. Hopefully you can see what I mean in the images below.

What this will do is stretch the texture when it’s applied on the model, but it will only stretch it on that outer edge, leaving a padding of 2 pixels that is almost the same color as the pixel right before the UVs start to stretch the texture, which takes away any seams on the final model. The close up result can be seen below.

Hopefully all of that makes sense. :slight_smile: The really great thing about all of this is that it automatically cuts and pads any of the textures. So if you need to adjust something in one of the textures, all you have to do is make the adjustment, update the texture in the object’s material, then just do a quick render of all the texture atlas models together. It’s really been a nice system so far for making texture atlases.

I also figured out a way to use just one material for all of the objects and have the textures be applied to them using some object masking techniques, but this post is already rather long, so I thought I would share it in the next update. Normally you would have to use a different material for each texture in the atlas since each plane needs a different texture and then change the material on the plane for each type of map, but I found another way that makes things a little simpler.

Next update I’ll be working on the leaves for the tree, and I’ll have an updated file with the sun and moon in the game!

(ArtOfLight) #7

Just wanted to do a small update on the game. There are new game builds that can be downloaded, so you can try things out for yourself, but the sun and a preliminary moon are in the game now with controls for the latitude, length of day, and the rotation of the game’s compass. I did a recording of the changes below, complete with the rather interesting polar circle sun rotation :). Right now the game’s calendar is set to be in July, so the sun’s position will be a bit different from what can be seen outside right now. I’ll have it so the user can set the calendar in one of the next updates. You can also see the trunk of the Aspen tree in the game if you play it.

One other exciting thing is that I was able to figure out the system for doing Winter to Spring seasonal transformations on the leaves using two mask textures that, combined, will make it look like the leaves are growing from the branch over a period of weeks. I’m not done modeling the leaves and branches that will be baked into the final texture, so I don’t know for sure how it will look in the final texture, but I have been testing it out on the models in Blender, and I’m pretty sure it will work all right. I really give the glory to God on this one if it does. :slight_smile: I’m just not that smart to figure it out on my own. :slight_smile:

Lastly, here is the rest of the previous post that shows the material setup I used that made it easier to create the texture atlases in Blender.

Here is how the overall material looks:

and here is one section of the material that is duplicated to the other sections:

and here is what is inside the node groups:

The basic idea for it is that it creates a mask for each texture by using the Object’s ID number. So each time a different texture is added to the texture atlas and applied to one of the objects talked about in the previous post, you just assign a different ID number to those objects with that texture. Then in the material, the Object Info node is able to retrieve all of the ID numbers for all of the objects.

One downside though is that, because the Object Indexes can only be integers, all of the objects will be white if you use the node directly since they are all over one. So, in order to use it, you have to isolate the objects that have the number you want to use by using the node group in the second image above. Basically it leaves any values greater than or less than the value you want black, then multiplies them together, leaving only the objects with the ID you want as white.

It’s fairly self explanatory if you try it out, so I won’t go into the details, but one important thing to remember is that you’ll want to have the incoming value you want to isolate a little bit less than the value you want. So if you want the objects with an ID of 2, you’ll want to use a value like 1.9. This way the only numbers that are left white are the values between 1.9 and whatever value comes out of the add node in the node group, which would be 2.1.

The great thing about it is, once you have all of it setup, all you have to do to pass a change from one of the textures to the final texture atlas is hook up the appropriate set of nodes for that texture atlas, like normals, diffuse, etc., and click on render.

I guess that’s it. On to the next adventure!

(ArtOfLight) #8

Next update is done! I’ve mostly been working on going over the landscape again and trying to finalize everything as much as I could before I would start adding vegetation to it. Also worked on taking a lot of the large noise out of the high poly sculpt and getting the larger forms more defined. You can see a before and after below.

Next thing I’ll be doing with it is cutting it up into tiles and using the Dynamic Topology sculpting mode to polish it a bit more. I think it should work well as a way of creating the final landscape meshes because I can have more vertices in the areas that need more detail, like the cliff edges and streams, and less vertices in the rest of the landscape.

I also thought I would try using SketchFab as a bit of a Game Design Document for the environment. That way everyone can see the bigger picture of what’s going to be in the environment and what goes where, and I’ll be able to update it as the game progresses. You can read more about it in the For You the Viewer section of the description, but I thought it would also be a good way for others to be able to give ideas for what could be in the different areas. I was able to get a little bit of a day/night cycle in there as well when the animation is turned on, but if it’s running to slowly with it there, let me know and I’ll take it off.

I’ve also updated the first post with some other new things as well as a list of things I’m planning to add to the game. So take a look and let me know what you think.

Lastly, you can see the progress I’ve made so far on the aspen branch that I’ll bake to a plane below. I’ve finished creating the branch and right now I’m working on modeling and putting textures on the leaves. I thought I would model 6 unique leaves altogether, then arrange them into several different bunches for each direction that the end of the branches go in: up, down, sideways, then duplicate those bunches over the branch. I have three of the leaves done so far.

(ArtOfLight) #9

Just wanted to give the next update on the game. I have all the controls done for being able to change the time of year and time of day in the game. This will allow me to test the seasonal changes on the aspen tree and get that working. As far as coding goes, I’ll be working on adding temperature changes next, so that I’ll be able to add correct wind to the game because apparently, in the research I’ve done, the wind’s strength is caused by how fast the temperature and air pressure changes.

I also finished modeling the leaves and putting them on the aspen branch that I’m using to bake onto the final meshes used for the tree’s branches, and then finished putting those baked meshes onto the tree as well. I don’t have it in the engine yet, but you can see how that looks in Blender’s viewport at the bottom.

There is a certain look of some aspen branches that, when you look at them from the side, it almost looks painterly and similar to how it looks when you dab a large paintbrush onto the canvas with the bristles going perpendicular or straight into the canvas, giving it this interesting feel. I tried to recreate that with the branch and the final meshes that are on the tree, and I think in the end it worked out fairly well. They both seem to have a bit of that painterly feel in certain areas.

The tree as it is now turned out to be about 8,000 triangles, and will be about 7,500 after I do a few more things, which is rather high, but I wanted to have a version of aspen that looked very full for the areas next to meadows and things where there is more sunlight, so this will be the highest poly version. The other trees will be either a lot shorter and full or as tall, but only have leaves at the top.

I guess that’s it. I’m going to wait and update the game build in the next update when the tree is inside the game, so right now it’s still the same version as before.

View from a lower angle:

(ArtOfLight) #10

The next update is ready to see!

It turned out to be a bit of a long update because of how many things happened since the last one, and since it can be a bit hard to read text here on Blenderartists, I thought I would just provide a link to the post on the Unreal Engine forum. So here is the link:
You can also see screenshots of the Aspen’s seasonal changes there, or up at the first post here.

(ArtOfLight) #11

Well, I can’t believe I’m saying this, but the seasons are in the game now and everything is working! There are new game builds available here:, so try it out if you’re interested and let me know what you think. There were quite a few times that I got stuck trying to figure out how to do things, especially with adding the ability to change latitude and go to the southern hemisphere where the seasons are opposite of the northern, but eventually I had ideas and got everything working. It’s a bit of a miracle to me, to be honest, to have no previous coding experience and be able to figure all of this out, which is why I said a few posts back that I really give the glory to God if it does work out because my goodness, does it ever get complicated :slight_smile:

Here is the video that shows the seasons. I added subtitles to both videos to make it easier to understand what I’m showing.

As I’m able to generate more detailed day to day temperatures, I should be able to get the season start dates more accurate, but amazingly, even with how it is right now, it’s pretty close to when the seasons start in the real world, just a few weeks off, at least in my latitude. That is one thing I could help with, if anyone is interested, is getting the seasons right for each latitude. You can find more info about it in the first post under the “Things I could use help with” Section.

I also got the moon working, which was another thing I had to figure out some really crazy stuff to get looking right because of it basically needing to be transparent on the side with a shadow, so I couldn’t have it just be lit by the sunlight. It was made even more difficult because one of the material nodes I used says the coordinates it needs are in World Space when they actually seem to be in Local Space, which took a little while to figure out. Thank goodness it all works though!

Here is the one that shows the moon:

All in all, I think this update turned out to be a bit of a milestone because I know that the concept is going to work and the foundation elements have been laid. Now it’s just to keep on refining it and adding to it.

Also, if anyone is interested in knowing how any of it works, I can try to put together a summery about it, but it could get long, so I wouldn’t want to spend the time if no one needs it :slight_smile:

Another thing is that, over the many months I’ve been working on the project, the first post had become a bit piecemeal. So I rewrote pretty much everything to fit with where the project is at currently, and it’s much more clear and concise now. I also added a philosophy behind the game section that’s really worth reading if you have the time.

I also did another Improv piano track that I haven’t added to the game yet, but it can found on SoundCloud here: . I was experimenting with trying to use both hands at the same time in the music much more, so some parts got a little bit difficult for my brain to handle, but it turned out okay still. Around 12:00 minutes and on is a really nice area. Having never really had music lessons, it will take a little while to get used to using both hands with the rhythms and melodies. I don’t have a recording studio to record them, so you’ll also have to ignore the background noise in some areas.

As I had said in the previous post, I have had some ideas for an interesting story in the game that I’ve updated the first post with. The main purpose of the game would still be just creating an experiential work of art that opens the heart to be in, but there would also be a story you could follow if you wanted to. The idea would be that you are inside of an older person’s memories, and going back through his life to events that happened that closed down his heart and working through those things that happened 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.

That’s all for now. Thanks for looking!

(ArtOfLight) #12

Next update is done! The main thing is that the new landscape is in the game now! There are new game builds that can be downloaded so anyone can see it. On the next update, I thought I would add a way to teleport to the different areas to make it easier to see them as I’m working on them.

For this update, I’ve been working on getting the landscape more fleshed out, trying to concept out how the different rocky areas will look together and making sure all the streams go downhill.

The dynamic topology mode has, so far, really been the perfect thing to use for what I’m doing. With it, I’ve been able to create natural rock bridges and overhangs, and basically just create whatever I wanted, while still having complete control as to how dense the vertices were. Another really great thing is that I’m able to cut up the landscape however I want instead of having a grid, so there are large sections of the landscape that won’t even be rendered since they are behind other parts of the landscape. Even further, the streams and rivers are cut up into smaller sections, so I should be able to make it pretty detailed in the end since only a small part is visible at a time. None of this would have been possible if I had used the landscape abilities that are in the Unreal Engine. One caveat is that, after everything was cut up, I found out Unreal looks at the bounding box of the mesh to test if it should be rendered instead of if the actual polygons are visible, so hopefully in future landscape updates I’ll be able to cut it up in a way that keeps this in mind and make it even better. :slight_smile:

Also, since I could control how dense the vertices were anywhere in the landscape, I have been able to make the landscape more detailed while cutting the final triangle count by about half of what the original landscape was. From about 6.5 million to about 3.5 million. Interestingly, it also cut the size of the download for the game by about 200mb.

Here is a screenshot of how I cut up the landscape, and the density of the landscape at Level of Detail 0:

, and here are some screenshots of how some of the areas look so far inside the game:

There is another new spontaneous piano session in the game under Session 4 and on SoundCloud here: I tried to do a lot of, what I like to call, note cascades, and it really turned out pretty. I also found out that the way I was reducing noise in the audio was really distorting some of the notes, but with this new way of doing it, everything is much more clear.

I’ve also been working on getting a plan on how the weather system is going to work, but it’s still in the concept stage, so there isn’t much to show. Just graphs of how it all connects together.

One last thing that was kind of neat that happened a few weeks ago is that, as you know, windows 10 always has a random image display at the log in screen, but the interesting thing was when I turned on my computer one morning, I was surprised to find this image of a waterfall that was very close to what I had already sculpted out for a waterfall in my landscape. This isn’t the image I had seen, but you can see the waterfall here: and here is what I had sculpted in my landscape:

It even has the archway that I had put over the outgoing stream. I thought that was a pretty cool thing to have happen, that I’ll now have a pretty good reference image of this area that I had basically just concept sculpted from imagination.

(ArtOfLight) #13

Things have been pretty busy since the last update with other things coming up, and I had some health issues that prevented me from working on things as much as I would like to, but all things considered, there is still quite a bit that got done.

I’m also happy to say that the teleporting works, but it’s not quite done yet, so I’ll wait until the next update to share new game builds. There have been some neat things to share with the vegetation as well, but this post is so long, I’ll wait until next time to share it.

The main thing for this update is I have been working on designing and modeling that room for teleporting to various areas. Since I’m not very good at drawing, I have to do all my concept work with the 3D models. So it took a little while, and many variations, but I think I finally arrived at a design that will be pretty nice in the end. The original design that I came up was going to be a circular room a glass dome in two pieces for the ceiling. Since the entire game is meant to be an art piece as well, I had the idea that it would be really neat to have paintings on the walls that the player would then teleport through. Here is what that original design looks like in the engine:

The idea being that you would be able to select a place to go to, then the two dome pieces would rotate around until they arrived at the painting. After this, the painting would change from being an impressionist painting of the game, into being a live look at the level. Then you would teleport to being next to a painting, hanging on the wall in one of the buildings. So it would feel like you were actually walking into the painting. As I got to thinking about it though, I realized the building would make a really great observatory for any star type puzzles, and I probably wouldn’t be able to make a better one. :slight_smile: So I decided to try to come up with a new idea for the teleport room.

As I was trying to come up with a concept for it, I remembered another idea I had a few months ago, that I had forgotten to write down, that I thought it would be really neat to do like an art gallery up in the clouds for the main menu. Then when the player clicked on play game, it would allow them to walk around in the art gallery, walk up to a painting, and go inside of the painting, into the main game world.

It took quite a few iterations to start getting a look that I liked, and to be honest I don’t normally design fantastical types of things :), but I think it could be a very pretty room in the end. While I was designing it, I kept seeing all of these things hanging from the ceiling and rotating around, almost like a chandelier or prisms hanging from the ceiling. As I started trying to go this direction, things started to come together more and more, and here is what I have so far inside the engine. Blender’s booleans helped tremendously to cut the holes in the ceilings glass grid:

Here is the rest of it that’s in Blender still with some very basic lighting:

The idea for the building is to have a wall of some kind in the center of the building with a shaft going to the ceiling, driving the rotations for all the gears. Then as the gears are rotating, they rotate the pieces hanging from the ceiling, which have the paintings on them, and as the player gets near a painting, the hanging wall would face the player and stop rotating. Then the painting would become the live version of itself. On the wall in the middle would be the poem from the description, kind of symbolic of it being the heart of the paintings, and the thing driving the possible story piece for each building.

Here are some shots of how the paintings look with a live version of the painting showing the game world:

and here is one in the game world that would be hanging on a wall in a building:

For right now, since the project is also an experiential art piece, I’m thinking that the best thing would be to have the live version flat, like a painting, instead of like an actual portal where it looks like you’re looking through a window. If anyone else has any thoughts about that, feel free to let me know. Here is what it looks like from the side:

I also had an idea of doing these doors along the two long walls that could be rotating at random amounts, making it feel like the wind is blowing through the building as it’s up in the clouds. The other idea was to have the doors in the middle start rotating first, and gradually rotate the other doors open, almost like an accordion effect. Then have them all close again starting at the far ends and going towards the middle, almost like the building is breathing, or love flowing in and out like it talks about in the poem. I’m not sure which one to go with yet though.

Since it’s going to be up in the clouds, the whole thing has been heavily inspired by clouds, with the way they move and change, and having something like rainbows in the clouds with all of the color wheels. Right now anyway, in that image up above, it’s kind of neat too that the glass frames seem to mostly disappear when you’re at the other end of the hall, as though you could walk off into the clouds. As part of all of that, I was thinking of having the glass color be a bit fuzzy around the edges, kind of like a rainbow effect:

So all in all, I now have the concept work done for two buildings and I have the teleporting all working. Hopefully I’ll be able to do more with the environment soon after the teleport room is more finished.

(ArtOfLight) #14

Next update is finally done! My goodness it takes a long time to setup and animate so many objects! And a very large amount of code :). At least the basic room for teleporting is done though, and it should make it easier to go around the level and see things as I’m working on them. There are also new game builds to try, but just to let anyone trying it know, having the portals in it is making the game crash sometimes because of having to render everything twice. I’ll add some options for it to make it better, but for now, you may have to play it at a lower quality setting.

Here is a video I made of everything as well:

I also added my first sound effect to the game!, which is the wind for the TeleRoom.

And there are four more spontaneous piano sessions in the game now, as well on SoundCloud here:

Here is the stuff I’ve been working on with the vegetation. I want to try to do as much experimenting as I can at this early stage, and figure out what will give the best results before I make the rest of the models.

First thing is I’ve been working on trying to figure out how to approach the other smaller kinds of aspen trees. As I have been studying the trees more, I’m finding that the main difficulty is trying to get the verticality in the leaves and branches. It’s not really something I had thought about before, but when looking at trees you see that the branches all come out horizontally while the leaves all fall down vertically from them, and this way that the leaves come down vertically is what makes us able to see the sun’s direct light on the tree from the ground. The difficulty is you can’t really have that very well when you’re using large planes for the branches and leaves.

From what I can tell, normally this is solved by having many different leaf planes going in random directions, but with the way you can see the branches in the winter, I don’t think that would work very well for this.

I realized too that this is the main reason that the larger trees have such a small area where you can see the light on the leaves and can look a bit splotching sometimes, because I only have the horizontal part of the branch and need to add the vertical part of the leaves as well:

So I’ve been trying to figure out some very low poly ways that I can get this leaf verticality that you can see the light hitting the leaf, especially for the trees that are down on the ground at eye level. And again, part of the difficulty is that the leaves have to be touching a branch, since you can see them growing from off the branch in Spring. Here are some leaf clusters that I have been working on with all of this in mind. The black lines are the shapes that the texture will be on when it goes on the tree. The top right clusters are made to go vertically on triangles for the large trees, while the other smaller clusters and branches are for the aspen saplings:

So far I’ve been able to get something that I think should work quite well for the almost bush like saplings. It seems to have a pretty similar profile to some of the pictures I have seen. What seems to work best is to have a quad made into two triangles that would only have three or four leaves on it, then you make the edge splitting the quad in half, higher than the other two vertices, making a V. You can see this with the bottom right clusters. Then you just keep rotating them as you go along the branch. Here is how it looks: (the vertex count includes some other meshes in the view that aren’t visible)

Other thing is I was able to figure out a better way to have the leaves disappear for the fall. I had been doing it though a texture mask that had a random value for each leaf that looked like this:

, but the problem was it was leaving bits of leaves floating in the air. So I manually assigned a color to each leaf, and now it looks like this:

The main thing to notice is the darkest leaves are in the front and will disappear last, while the brightest are in the back and will disappear first. This way it should disappear back to front and not leave any bits of leaves around.

Another thing with this fall transition is there are rings being left around the leaves as they disappear, and I finally figured out it was being caused by Unreal’s compression settings. You can see the large blocks it was creating here:

I found out though that if it’s set to a normal map compression setting, it’s higher quality and doesn’t cause these:

I haven’t tried it yet, but right now the plan is to store the mask in the Blue channel of one my Normal maps, and it should get rid of the ring around the leaves.

So all in all, once everything is implemented, the trees, and next vegetation I work on, should look quite a bit better.

(dudecon) #15

This is a work of such aching beauty. I feel I have seen some of these places in my dreams. Thank you for sharing your tender heart with us.
The aspen is my favorite tree for its silvery bark and beautiful round leaves, so I’m delighted that you have included it!
The teleport room is lovely as well. The stained-glass and slow movements is so calming.

As far as seasons go, I recommend reading Wikipedia. Here’s a bit of what it says:

In temperate and subpolar regions, the seasons are marked by changes in the intensity of sunlight that reaches the Earth’s surface, variations of which may cause animals to undergo hibernation or to migrate, and plants to be dormant. four calendar-based seasons are generally recognized: spring, summer, autumn or fall, and winter. Ecologists often use a six-season model for temperate climate regions: prevernal, vernal, estival, serotinal, autumnal, and hibernal. Many tropical regions have two seasons: the rainy, wet, or monsoon season and the dry season. Some have a third cool, mild, or harmattan season. Seasons often held special significance for agrarian societies, whose lives revolved around planting and harvest times, and the change of seasons was often attended by ritual.
So, more than temperature, the light intensity (and the angle of the sun) is the most important factor. Perhaps you could do something with the colored light in the teleport room falling on the portals to change the light and the season in the area they teleport to?

Looking forward to your continued progress!

(ArtOfLight) #16

You’re very welcome! I’m glad that you’re enjoying it :). I’ve really been enjoying creating it. I always get so excited thinking about what it could look like in the future. It’s nice to know that it already feels the way I had hoped it would! Thank you as well, that’s very kind. To give credit where credit is due, it’s really God’s heart, or at least the way that I have known Him to be :slight_smile:

I would say aspens are my favorite as well! I love the way they sound in a quiet breeze, too. I don’t think I’ve ever heard another tree sound the way they do.

Thanks, that’s some great info! I had not noticed that before; I’ll have to add it to my ideas list. There was a really great tutorial series I had found on Youtube that went through adding a realistic sun and moon cycle that I was able to add to the game. So I have the sun changing position throughout the year and according to latitude, but I had not thought of changing the light as well.

If I understand what you’re saying correctly, that’s an interesting idea having each portal be a certain time of year, then have the time of year change automatically when you get near one of the portals. That could work well with the idea of having an impressionistic painting turning into a live version of the painting when the player gets near the portal. I’ll have to think about how something like that might work. I think the main thing would be getting the sun position to change slowly so it wasn’t too jarring to have it change all of a sudden, since currently the room and game world share the same sun.

I actually had kind of a similar idea as part of a storyline that might be in the game, that each house you teleport into would be a certain time period in the main character’s life, and the player could then find a paper or something with a date on it somewhere in the house, and when they change the date to that time period, they could then unfold part of the character’s life story of things that happened while the character was living in that house. All of that is a ways away though :slight_smile:

Thanks! I’m glad someone will be watching :slight_smile:

(ArtOfLight) #17

Next update is ready and there are new game builds available here: !

For this update, I’ve mainly been working on implementing the ideas I had for the seasons and teleporter options I mentioned in the previous update, and I also got my first Aspen bush/sapling done! There are a few things I’ll have to adjust with it, but for the most part, I think it turned out quite well. The SketchFab landscape in the first post has been updated too.

Dudecon also had a great idea for having the sunlight intensity change as the seasons change, which I was able to add on this update, and I think really adds to the atmosphere of the world. I will probably be adjusting it further as I get more things done, but at least the code is in there. I also worked on the lighting for the shadows a bit.

There is another spontaneous piano session found here:

You can see the things I have updated below, as well as a few other more real-time things in this video:

Here are some general screenshots of how things are looking:

And here are some screenshots of things I have updated:
Difference in sun intensity, depending on seasons and latitude:
Notice how bright the lit areas are in summer, even though it’s the same time of day for both images.

Trees no longer leave bits of leaves behind when the leaves fall off:

Leaves change color at the plant’s edges first, the way they do in nature:

After adding the verticality to the branches and leaves that I mentioned in the previous post, you can see the light hitting the leaves much better now, even when under the tree. Overall, each branch looks much fuller as well:

I also found that having a mesh similar to what is below can help a lot for the profile at the top of the Aspen bushes. It keeps things from looking flat at the top:

Also, here are all the final shapes I used for the bush. So far the two triangles in a V seem to look the best, so I’ll be adding more variations of those to the bush with different leaf textures on them in the future:

Spring leaves growing:

For the next update, I’ll mostly be working on code behind the scenes. There were some things that I had done when I was first starting out, and still learning, that I really need to fix before adding more code. I also thought I would start doing a writeup about how the season transitions work, but I don’t know how complicated it could get, or how long it might take, so no promises there :). I would also like to adjust the shadows for night to transition to be darker as well.

Strictly Unreal related:
One last thing I wanted to share is an idea I had for creating references to other blueprints in Unreal’s “Blueprint” coding system. As anyone who has worked with the blueprints knows, it can be difficult to get references to other Blueprints, especially for Widget-Actor interaction. The way I had been doing it was to create the widget in say the character blueprint, and store a reference to it there as well, but then I would have to get a reference to wherever I had created the widget if I wanted another blueprint to interact with that widget. The difficulty was that I ended up starting to have references to things scattered throughout the code, and it just wasn’t very easy to interact between Blueprints.

The idea I had though was to have all my references stored in the Game Mode class, then if I need one of the references in another class, I can just get it from what’s stored in the Game Mode, since the game mode can be accessed anywhere. The way I did it was to have one actor class that is just used for Reference Storage. Then when this class is instanced inside of the game world, I assign all of the other actor classes that are in the game world to variables in this class, using public variables that I can set up in the editor. Then I just use a get all actors of class node in the Game Mode, and set it to get that Reference Storage class that’s inside of the level. So now the Game Mode has access to all the actors that are inside of the game world, via that Reference Storage class. I also use a get all actors of class node to get a reference to the character, since the character is only instanced after the game starts.

Next thing is I create all the widgets in the Game Mode class as well, and store them in a variable at the beginning of the game. Then when I want to add one to the viewport, I just get the reference to the widget that is in the Game Mode.

So now, if I need to communicate back and forth between a widget, an actor, or the character, I just cast to the game mode and get the reference stored there, and I’m able to access any actors in the game and any widgets in the game, from anywhere in the game. And I only have to look for the reference to it in a single place, instead of many references scattered all over. I don’t know if it would be considered the proper way to do it, but so far, it seems to be working out pretty well. There could be some difficulty with it if you have separate levels you are loading, but I think it might be possible to just have the Game Mode get different references for each level.

Thanks for looking!

(ArtOfLight) #18

Next update is done! Not too much to show in this update. I’ve mainly been working on cleaning up code and getting things more organized, but there are a few things I’ve added that are new. I thought I would wait to update the game builds until the next update when there should be wind in the game. I was also able to get a good start on the explanation of how to create the seasonal transitions textures and materials. It’s definitely going to be quite lengthy :).

First addition is that the teleporter room is inside of it’s own level now, which loads and unloads from memory. That way it’s not taking up computer resources when the player isn’t near a teleporter. It took a while to get it working because of the way the teleporters need to be linked in the code, and since the ones in the teleport room don’t always exist if they haven’t been created yet, it was causing problems for the ones in the landscape. I finally got it all working though.

The biggest visible thing though is I was able to implement moon phases for all the lighting at night, both for the actual moon light and the ambient light. So the brightness of the nighttime corresponds to how much the moon is lit now. While I was working on this, there was another really interesting thing I was able to add that I hadn’t thought of before. When I was looking up information on the brightness of the moon at different phases, I ran across this article that had a graph of how bright the moon is during each phase, but also how bright it is as it gets higher in the sky:

After seeing this, I realized I hadn’t implemented any kind of atmosphere to how bright the sun and moon are throughout the day or night. Then I realized that’s the real reason why the sun is a different intensity during the winter, because it doesn’t rise as high in the sky and the light has to travel through more of the atmosphere. So after implementing that, the intensity of the sunlight throughout the day is governed by how high it is in the sky and the intensity of the winter light behaves more like the real world now. The way I had been doing it before was according to the temperature, so the colder the average temperature was, the less bright the sun was. It worked pretty well in the end, but this other way is definitely much better and the brightness ended up being about what I had set it to before. I’ll also be able to add modifiers to the brightness according to things like humidity later down the road. All in all, adding those two things made all of the lighting quite nice, and you get much more of a sense of time of day. Here are a bunch of screenshots of the different intensities:

Twilight to Afternoon:

Intensities in Teleport Room:


Morning to Afternoon - Fall:

Moon Intensities:
No Moon:

Half Moon:

Moon at Different Heights:

Moon Up Higher:

Unreal related
There were a couple things on the code side of things that I thought could be helpful to someone.

The first one is about the skylight. It turned out to be a bit of a challenge trying to get one skylight to work for both the night and day because the skylight needs to be able to recapture the environment when the lighting is changing during sunrise and sunset and at night vs day, but at night, all it captures is black, so I had to have a way that at night I could increase the intensity to get a little bit of fill light, then lower the intensity as the sun was rising and the sky was becoming brighter. It also needs to have a different intensity at night that is based on both the moon phase and a separate calculation for the atmosphere based on the moon’s position instead of the sun. Here is the final result I arrived at:

Hopefully it’s fairly self explanatory for anyone used to working with blueprints. Basically it uses the sun’s Y rotation to figure out whether it’s day or night, then interpolates between the value needed for day and the value needed for night during a certain transition phase. Although the result looks simple, getting to this point was quite difficult with all of the different factors that have to be accounted for and took a lot of trial and error.

The other idea is about loading streaming levels. Normally for doing things like loading a saved game, I put all the code inside of a function in the Game Mode class. Then whenever the game needs to load or save data, I just call that function, but I’m not able to do that with the streaming levels because they have a timer associated with them that can’t be used in a function. I was going to try doing it with a Macro, but they can’t be called in other Blueprints because of the way Macros work. So the idea I had was to put all the code associated with loading the level inside of the Game Mode. Then wherever the level needs to load, use a Blueprint Interface to execute the code in the Game Mode whenever the level needs to load. Here is how it looks in the Editor:

It really works quite well, and is almost like having a function that can be called anywhere. I realize it’s probably not the most amazing idea :), but, because of having so many different places and ways that the Teleporting room needs to load, and needing to do it through Blueprints instead of streaming volumes, I had started having to duplicate code in various places, and having it this way really organized things nicely.

I think that’s everything. As I had mentioned before, I thought I would try to work on wind next. Now that I have low-growing bushes that won’t get much wind and tall trees that get a lot of wind, I’ll be able to experiment with getting the wind intensity right for both.

Thanks for looking :slight_smile:

(ErkBlender) #19

This is amazingly beautiful! Keep on the great work :slight_smile:

(Photox) #20

Incredible, keep going!