Go Back   CGFeedback > CG Forums > WIP - 3D - Feedback needed!

WIP - 3D - Feedback needed! Where people post their 3D WIP works

Thread Tools Display Modes
Old 04-12-2017, 02:06 PM   #1
Junior Member
Points: 2,554, Level: 30 Points: 2,554, Level: 30 Points: 2,554, Level: 30
Activity: 25% Activity: 25% Activity: 25%
Join Date: Dec 2015
Location: USA
Posts: 11
Real Name: John Perkins
Default The Heart game/artwork

I’ve been working on this for about a year now, posting it on the Unreal forums and a couple others, and thought I would start posting it on here as well. It’s definitely been quite an adventure so far! You can read the second post below to see the most recent update.

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. So far, I’ve done pretty much everything from scratch, hand sculpting and painting.

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

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

Attached Thumbnails
Click image for larger version

Name:	Brightness Throughout Day  4_1.jpg
Views:	2
Size:	380.7 KB
ID:	30324  

Last edited by ArtOfLight; 07-01-2018 at 07:29 AM.
ArtOfLight is offline   Reply With Quote
Old 04-12-2017, 02:09 PM   #2
Junior Member
Points: 2,554, Level: 30 Points: 2,554, Level: 30 Points: 2,554, Level: 30
Activity: 25% Activity: 25% Activity: 25%
Join Date: Dec 2015
Location: USA
Posts: 11
Real Name: John Perkins

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, on Blenderartists, 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 is offline   Reply With Quote
Old 07-01-2018, 07:27 AM   #3
Junior Member
Points: 2,554, Level: 30 Points: 2,554, Level: 30 Points: 2,554, Level: 30
Activity: 25% Activity: 25% Activity: 25%
Join Date: Dec 2015
Location: USA
Posts: 11
Real Name: John Perkins

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.
ArtOfLight is offline   Reply With Quote

Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On

Forum Jump

All times are GMT +13. The time now is 03:18 PM.

Powered by vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.