Browser Update Required

In order to fully experience everything this site has to offer, you must upgrade your browser. Please use the links below to upgrade your existing browser.

Cookies Required

Cookies must be enabled in order to view this site correctly. Please enable Cookies by changing your browser options.

Dev Blog: Killing in the Rain With Ryan Favale



Hello, I’m Ryan Favale and I am a Programmer on the H1Z1 team. I've been programming software and my own games since I was 12 years old, but I also have a four year Computer Science Degree, four years of graphics programming at Intel, and six years of graphics programming here at SOE.

[Games & Project History]

At SOE I've worked on EverQuest II, PlanetSide 2, Landmark, and EverQuest Next.  And my personal projects have included things such as Sci-Fi surface shaders, sky and planetary systems and clouds systems and rendering, bullet-decals, shadows & shading, ShaderModel upgrades, graphics engine updates, weather systems and much more.

 [Graphics Programming]


I'm sure most of you already know what a graphics programmer is, but often I get blank stares from people when I tell them I'm a graphics programmer. Then when I try and explain what that is, their eyes glaze over and redden slightly.  Not sure why that is, but I'm guessing I've just blown their minds and entered them into a new dimension and they just don't know quite how to handle it.  ;)


In all seriousness, a graphics programmer centers around the concept of constructing the molecular surface reactions in sub-pixel space, as well as developing macro-systems which manage and manipulate larger bodies of substances like water, clouds, cloth, and animated characters.  We have to manipulate them and control them in a way to create life like behaviors on your screen.


Our hand bag includes tools such as cross and dot products, matrix transformations, vector math, and a number of geometrical formulas and algorithms to control surface formations and movement in your virtual 3D worlds.  A lot of our work feeds off of decades of work from modern to historical deep thinkers, stretching back to even centuries ago where societies allowed some citizens to do nothing but think about our universe and develop ways to describe how things work and react using numbers and math.


But that's just how the macro object or surface systems are controlled and manipulated.  We go much deeper into photon reactions and how light penetrates molecular structures, bounce lighting reactions, and frequency bending and shifting through lenses and sub-particle mediums.  In order for us to display these types of results onto your screen, calculations are made in order to simplify these reactions into formulas only modern PC's can handle.  We have a limited amount of time offered by today's graphics and central processing hardware, calculating billions or trillions of math instructions per second in order to display an animation of colors on your screen which can be interpreted by the human brain as life-like and a believable representation of real objects in a 3D environment or 2D animation."



On top of all this, our job demands an 'artistic eye' in order to 'paint' pleasant and communicative contrast and subtleties in lighting and color in order to give the player the ability to recognize geometrical shape and 3D space on a flat surface (aka your monitor screen).  We need to make sure when you 'move' your perspective through the virtual 3D world it comes across in a natural way for your mind to control and understand using only a mouse and keyboard or game controller to interact with the world.  This all entails intense matrix calculations and surface lighting algorithms which display the view in a shifting, moving, way in which keeps your mind's 'feet on the ground', if you will, while playing the game.


While we manage all these things we are in continual communication with our professional artists on these projects, making sure the 'art' they produce is correctly split up and divided into understandable data structures and input into our graphics systems and particle, or pixel, painter implementations and surface shading code."


So that clears it all up then, right?  ;) Great.  Let's move on.


[Dynamic Weather]



H1Z1 is being developed with a dynamic weather system.  What does that mean?


So far we have server controlled rain and rain-clouds as well as the control over a weather 'type' applied to the region you are in. These knobs and numbers control whether it's shining bright and happy or dark, rainy, and gloomy, and everything in-between.  We're moving more and more weather control over to the server, as much as possible before Early Access, in order to keep everyone playing the game on the same page, seeing the same weather, the same fog particle at the same location, viewing the same moon and stars at the exact same locations, no matter if they're playing in Hong Kong or Wichita, Kansas.


While it's true each person's game instance will currently still play the same weather patterns without moving this over to the server, this move will prevent hackers from turning their own fog or visually disadvantageous settings off.  We all need to be on the same playing ground in order to ensure fair play whenever possible.  (And don't fret low end system owners. We're making these weather effects scale down to play and have a very comparable impact on low-end system gameplay.)


We're also in progressive development of even more exciting features like dynamic snow which forms and melts based on a continuously changing environment temperature, humidity, and wind conditions.

We're planning on moving even more weather features into a much more powerful server controller which manipulates things like how and when fog rolls in and where, how the overhead clouds are forming, sun angles, haze, and bloom effects, and possibly even meteor showers and more impacting weather patterns like dust storms and thunder and lightning storms.


We're really excited to bring this level of detail and realism to the MMO genre and all games in general. Combined with a day/night cycle, we're getting into seasons and astronomical impacts on the world you play in.  We're hoping to deliver to you such an immersive experience you'll forget what the weather is outside your very own office or bedroom.


[H1Z1 Visuals]

What I bring to the H1Z1 world is mainly the weather.  This includes rain, snow, and clouds passing through the environment (and hopefully many more weather effects to come), as well as how they impact surface lighting and coloring, such as making a rock look more wet or dry or snowed on with sparkly crystalline formations or whatever else weathering might do to object surfaces.

I've also worked on some smaller pieces of H1Z1 like object highlighting, water surface updates, reflection systems, and screen effects (like blurred silhouettes and discoloring and hit detection visuals). 

And whenever a graphics related math equation, shader query, or visually technical problem comes up I help the team find a solution, either directly or indirectly through conversation.

[Early Access]

What will I have ready to show for Early Access?  Well, first off, the rain, rain clouds, surface wetness, initial weather integrated systems, and visual health effects are all in place and running, and have been for a while now.  I am currently wrapping up the snow effects (possibly Early Access?), some R&D on reflections, and tuning our graphics settings to run better on low-end systems.

Later on, I plan to have many more weather systems and effects in place to give the world a much more living, breathing, environmental feel and heightened immersion.

I hope to bring the details in H1Z1 to life, making every pixel seem alive in some way, making eye-candy for the nextGen consumers as well as optimizing the *$%!* out of them for low-end systems.

I love realism, and I'm lovin' H1Z1.  :)

Beyond that, the sky's the limit.  No really.  I'm pretty sure we're not going to space with H1Z1.  So pretty much whatever I can do to *on earth*.  ;)

Ryan Favale, H1Z1 Programmer

Filter By: