• Twitter
  • Youtube

Monday, February 27, 2017

Robot Farm Greenlight and Dev blog 1

Hooray! Robot Farm has been Greenlit by Steam community and we would like to thank all of you for your support and feedback. It was very exciting and flattering to see our baby being thrown out in the world and be welcomed there. But, to be fair, not all the feedback was positive, we also received some criticism and we value it a lot. In fact, we decided that we are not ready to release the game in its current state, we totally agree with most comments and we don't want to release a raw game. Therefore, we decided to take our time polishing all aspects of the game in order to produce the best experience possible.

Furthermore, we understand how important and insightful community feedback is so we are now planning to post weekly (-ish) dev blogs with information on recent updates where developers will take turns explaining their design decisions and some implementation details. This way you have an ability to affect the course of development, give us more suggestions and simply follow the progress.

The entirety of the feedback was mostly graphics-related. As such, we've began working on new "tiles," or the pixel-art for the world, along with some cool post-processing effects that are going to be detailed in this post. Keep in mind, the tiles aren't finished or implemented yet - so while our new post-processing effects will be showcased, the world itself is still using the old art.

Without further adieu, meet Daniel! Our dedicated graphics programmer.

Graphics improvements:
We got a lot of criticism for the graphics of RF, so the entire team got together to come up with ideas to make the game look more eye-catching. Since my responsibility is the technical side of things, I looked into how to improve the limited lighting we have. Although we did have a pretty cool day/night-cycle with beautifully orange sunsets and sunrises, it left the world looking fairly flat as the "sunlight" affected the whole screen equally. We did have some nice lights inside the houses, but they just weren't enough.

Enter house shadows! I adapted the existing point light shadow system to also be able to cast shadows from sunlight onto the ground as well. Hilariously, this made the houses look like stupid walled-in gardens with wooden floors, as the sun would shine in through the ceiling of the house if the sun was high in the sky. To solve this, I added a simple 3D roof to each house which casts shadows on the ground. In the future, I'll be adding multiple designs for the ceilings, and the house height is also adjustable to control the shadow lengths. Finally, I animated the sun direction to move realistically across the sky so the shadows cast by the buildings changed based on the time of the day. In other words, the lighting is essentially 2.5D, with 3D walls and roofs projected onto the ground to form shadows, so it's a really powerful system!

Another cool effect I wanted to try after a tip from Brayden was cloud shadows. I experimented a bit, but getting good visually appealing results was difficult. I went through a lot of iterations and had to tweak a lot of things before it actually started to look like clouds at all. My current implementation uses a number of filtered noise layers that are all animated differently, with some heavy scaling and remapping to "cloudify" the noise. At the end, I was fairly satisfied with the results! I also added some very simple controls to change the "cloudiness" while the game is running, allowing us to seamlessly transition from a clear day to a rain storm in the future!

Brayden also requested god rays, the cool phenomenon where you can see sunlight in the air, and asked if it was possible to "generate" them from the clouds. Now, god rays is a pretty common effect in games like ours, but it's always faked by just adding some rays to the corner of the screen or at fixed points in the world, so I initially thought it'd be impossible to create convincing god rays from the clouds without requiring really fast hardware, but two days later I had a working implementation that didn't require a NASA supercomputer to run!

The algorithm is pretty crazy. It's essentially 3D raytracing through the air, checking for cloud shadows at a lot of points in the air, which is really slow. However, by generating the god rays at a lower resolution and using a couple of other tricks, I managed to keep the performance up. I even have a number of additional optimizations planned that should ensure that even the weakest Intel integrated graphics cards can run the game well with glorious god rays! In addition, the strength of the god rays is modified by the cloudiness. On sunny days, the god rays are toned down a lot so they don't overwhelm the entire screen, while on cloudy days even just a small hole in the clouds will produce a glorious pillar of light!

Please note that this is still a work in progress. I'm still tweaking almost everything daily, but feedback is always welcome!


Post a Comment