You are a traveling painter, exploring the island of Eastshade. Capture the world on canvas using your artist’s easel. Talk to the inhabitants to learn about their lives. Make friends and help those in need. Discover mysteries and uncover secrets about the land. Surmount natural impasses to reach forgotten places. Experience how your actions impact the world around you.

  • View media
  • View media
  • View media
  • View media
  • View media
  • View media
Post article RSS Articles

The sky is an important character in Eastshade. In addition to taking up a large portion of the screen at any given moment, it also gives players the sense that the game world has its own beating heart. While I knew I wanted to make the sky spectacular and dynamic, I also didn’t want to spend tons of performance or development time on it. While something like dynamic volumetric clouds can look absolutely awesome and convincing, they are out of my comfort zone technically and are very expensive to render at high enough detail to look realistic. After all, Eastshade is not an airplane simulator! So I opted for a solution with simple parts that I could hone easily with my artist’s eye, rather than a more procedural approach.

lyndow-tods

The Day Cycle Manager

Firstly, I knew there were going to be a bunch of values to tweak for each distinct time of day, so I wanted one central place to save/load and tweak them all. Since the sky setup is made of quite a few parts and shaders, I was led to create what I call the “DayCycler” component, which looks like this:

day-cycler


This custom inspector may look formidable with its many fields and values, but it’s really just a bunch of references to material values, light values, and rotations pertinent to the global lighting. Inside this component is a simple update loop which interpolates between the most recent and incoming time of day presets. With this simple system, I can go through and tweak each distinct time of day like a painter, and all the in-between times are taken care of for me. No need to manage 20 different IPO curves. The times are 0-1 rather than 24:00 so don’t be confused by times like 0.175 (that would be something like 4:12 AM). There are a lot of things in the world that look at the time of day which are more local, such as a a hanging lantern, or chirping birds. Little lights and audio sources like these drift in and out of memory as the world streams around the player. Referencing and managing all these little things in this central controller would be quite cumbersome, so the second part of this system is this little component:

ValueCycler


I attach this to any little light or audio source that is day/night dependent and it looks at the current time of day and decides what value it should be independent of the DayCycler. No need to micro manage values like these.

Sky Composition

skybox-diagram

The “sky” is composed of a few different elements:

Fog – Starting with the closest and moving out, we have the all-important fog. I use the fantastic Fog Volume for this. The reason I love fog volume is because of its gorgeous and fairly cheap light in-scattering. If you’ve never heard of in-scattering, I suppose it can be described as the look of sunlight passing through fog. I’m not talking about god rays (though in real life I believe its caused by the same thing). It adds a lot of depth and a sense of light direction to the atmosphere.

Clouds – Call me old fashioned, but I like the look of photo clouds. The biggest issue with photo clouds is that it is difficult to make them dynamic. My strategy was simply to take photos on a day that the clouds didn’t have a strong sense of light direction, combined with touching up the parts that look too directional. Once I had my 360 degree cloud panorama, I made an alpha mask cutting out the blue parts because I wanted to encapsulate the clouds seperate from the atmosphere. I mapped my clouds to a dome that rotates slowly to give the impression that the clouds are moving along the horizon. This trick is stupid simple, and is ineffective for giving players the impression that clouds are passing over them, so if you want that you will have to combine this with other methods like overhead UV scrolling clouds or something like that. I actually haven’t gotten around to doing overhead clouds yet, but funnily enough players tend to rarely look directly up and haven’t noticed.

Skybox-Structure

Atmosphere – I find a simple 2-value gradient shader on a dome mesh is sufficient for the atmosphere. The opacity and colors animate with the day cycle. I increase opacity near the horizon so it looks thicker, while the stars show through more when you look directly up.

Sun – There are two parts to my sun. I have a sun flare, and an actual sphere mesh with a highly emissive solid color. This way I get a nice bloom, even if the sun is only partially showing. This is particularly useful for me in Eastshade, as there are daily eclipses and I needed a way of showing the sun slowly hide or emerge from behind the moon. The sun’s directional light doesn’t actually move around in the sky, it just rotates. To keep the sphere lined up with the flare, I rotate the sphere around the player’s head, rather than around its own center.

Midday-Eclipse

Moon – I designed a custom shader for the moon. It’s anything but physically accurate. It expands the light angle a bit, and uses heavy fresnel to fake the bending of light around the atmosphere. I have a special light that shines on the moon alone to simulate the sun hitting it. Here’s a bit of Eastshade trivia regarding its moon:

The moon in Eastshade appears habitable, and since its about the same size as the planet you’re standing on, you orbit it as much as it orbits you! In other words, both planets are moons to one another. This means Eastshade’s moon remains in the same place in the sky all the time, which creates daily solar and lunar eclipses. At midday it blocks you from the sun, and at midnight you block it from the sun. Tidally locked, you orbit around each other in a double planet dance all the way around the sun. Is there another world of intelligent life just across the cosmic pond? The residents of Eastshade can’t know. All they can do is look up and wonder…

Space – The furthest background is the space dome. This dome has a tiling star texture, supplemented with bits of geometry for the larger stars to break up the tiling. The reason I use geometry to break up tiling is because having a texture that wraps around the whole sky would require a MASSIVE texture to look sharp. The fact that stars are tiny little dots means they live or die on their sharpness. If I wanted to add a nebula or something like that I’d probably have that as a decal sticker on the star dome, because doesn’t tile and doesn’t need as much resolution as the stars. I’m trying to keep memory and build size down, mostly because I don’t want to waste development time maintaining a huge build.

geo-stars

Finally, its important to note that all these things follow the player around as they move. Since most of these things are supposed to look infinitely far, there shouldn’t be any parallax between the elements.

Not Done!

I’m not done with the sky systems in Eastshade. There are a few things left to do. Among them is come up with some sort of overhead cloud coverage to pass over the player. I’m thinking I will put a flat disc and use vertex color to taper the opacity around the edges. Then I’ll scroll the UVs over a tiling cloud texture. I also want to have multiple cloud textures for different weather conditions and fade between them. I’ll need to make a weather controller that operates on top of the DayCycler and plays off the base values, so I can have any weather condition at any time of day. I’ll need to implement a global wetness property in my shaders that increases gloss and spec, while darkening the diffuse a bit.

First Official Trailer

First Official Trailer

News 9 comments

After over two years of development, we're proud to present our first official trailer!

Not a Walking Simulator

Not a Walking Simulator

News 4 comments

I’ve done a terrible job explaining what Eastshade is like to play. We're making an effort to remedy that.

A First Look at the Painting Mechanic

A First Look at the Painting Mechanic

News 2 comments

You are a traveling painter, exploring the island of Eastshade. Capture the world on canvas using your artist’s easel. This is a short video unveiling...

The Wide World

The Wide World

News 6 comments

The vertical slice, effectively a third of the game’s total content, is done! This is a joyous and momentous milestone!

Comments  (0 - 10 of 26)
calmflow
calmflow

So Uru without the puzzles basically?

Reply Good karma Bad karma+1 vote
Jerikøh
Jerikøh

This with binaural audio..
jss

Reply Good karma Bad karma+1 vote
psn_toonjuice
psn_toonjuice

I'm absolutely loving the idea of this game! Free, open worlds without the hassle of killing enemies or scavenging resources. My biggest concern, however, is just how well this would run on older devices. I, myself, don't have the biggest and priciest card (just GeForce 860M), but I've played games before that look gorgeous without a major hit on the framerate. Now, I'm not totally sure how that would be accomplished, but I sincerely hope that's the case with this game. Awesome work so far!

Reply Good karma Bad karma+1 vote
DannyWeinbaum Creator
DannyWeinbaum

I'm developing on a 7870 which isn't exactly high end. I think a 860M will be able to play it on low or medium. I'll do as much optimizing as I can to make sure people don't need crazy systems to play it.

Reply Good karma+1 vote
Corbul
Corbul

hmmm, interesting!
but won't the world have to constantly be expanded or to randomly generate itself to keep players entertained?

Reply Good karma Bad karma+1 vote
G_Luz
G_Luz

It looks beatiful, keep it up pleaseee

Reply Good karma Bad karma+2 votes
Cristiano.b.
Cristiano.b.

I love the idea!Looks really beautiful. :D

Reply Good karma Bad karma+2 votes
Guest
Guest

This comment is currently awaiting admin approval, join now to view.

SinKing
SinKing

I am intrigued, even though you are not making a mushroom-picking simulation. I just wonder about one thing - isn't this game taking place on Earth? Everything looks down to it, except the planet/moon on your new screenshots seems very large and blue to be mistaken for Earth's moon (ever though about why all the other planet's moons have names, but our moon is just called "moon"?)

I dig what I see this far, but I remind myself that all I'm seeing is a well-made map, not a game. I'm sure it was more than enough work getting this far with it, but I still don't clearly get the intention or direction this game is going to take. It seems like something like this would need a strong narrative like Dear Esther or a range of underlying systems beyond cold/warm hungry/fed to make it more interesting.

From a writing standpoint it could be interesting to add competition. You might find out you aren't alone, but you are competing with others for the same resources. Then you could have a choice between confrontation and cooperation. However, that's pretty generic again, so let's see what you will do on your own. To me, this game highly looks like it could have metaphysical aspects and a moral story ending. This doesn't mean it would be narrative or story driven, it would just mean working towards a goal, a finite solution for the game design. I keep watching this, updates are always nice!

Reply Good karma Bad karma+4 votes
~Leafshade~
~Leafshade~

Our moon is called Luna, and our sun is called Sol.

Reply Good karma Bad karma+1 vote
Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.

Follow Report Profile
Icon
Eastshade
Platforms
Windows, Mac, Linux
Creator
DannyWeinbaum
Engine
Unity
Contact
Send Message
Homepage
Eastshade.com
Release date
Game watch
Follow
Share
Style
Genre
Role Playing
Theme
Fantasy
Players
Single Player
Project
Indie
Twitter

Latest tweets from @eastshade

Upgraded to 5.5 smoothly. Wonderful and stable release. I'm strangely giddy over the new selection outline. Thanks and good job @unity3d!

Dec 9 2016

Does anyone know if windows can unzip a .7z file natively?

Dec 8 2016

RT @Railboy: When you crank the SSAO. #gamedev T.co

Dec 7 2016

Talos Principle has a Walking Simulator tag on steam. Seriously? So a walking simulator really is just any first-person game without guns.

Dec 6 2016

#UnityTips "Optimize Game Objects" will make it so bone transforms aren't exposed in the scene. This vastly improve… T.co

Dec 6 2016

RT @eastshade: Does anyone know of any freelance English to Chinese translators? #gamedev

Dec 5 2016

Does anyone know of any freelance English to Chinese translators? #gamedev

Dec 5 2016

Embed Buttons
Link to Eastshade by selecting a button and using the embed code provided more...
Eastshade
Statistics
Last Update
Watchers
219 members
Articles
15