Space Engineers Feedback

Realistic light falloff
The current system for lights where the user can change the radius, intensity, and falloff independently is quite unrealistic, never mind the formula used for falloff is nothing at all like real life. Furthermore the fact that the power consumption of a light is not affected by its brightness is a glaring gameplay flaw. I propose a more realistic system that should look good, while also taking into consideration performance constraints. To begin with, the sliders for radius intensity and falloff are all removed and replaced with a single slider for brightness (rated in lumens). The power consumption of the light should be directly proportional to this slider. The real formula for falloff is brightness / distance^2, however this results in a light level that is never 0 giving lights infinite range which is terrible for performance.However, having an arbitrary cutoff would cause an unsightly line where the light suddenly stops. Instead I propose first calculating the range of the light as sqrt(lighting_quality / brightness). Then have the formula for falloff be brightness * (range - distance) / (range * distance^2). This results in an almost identical curve, only it linearly tapers off so the light smoothly fades away at the cutoff. The lighting quality is a graphics option that players can set in their clients which effectively determines the maximum range of lights. This gives players control over the trade off between performance and aesthetics. This setting should be controlled by a slider between a small positive value (for maximum performance) and a very large positive value (for maximum light quality). This all should apply to spotlights as well, but due to spotlights focusing all their light into a narrow field of view, they should be able to get several times more effective brightness for a given power consumption. Also, do the same for the engineer's personal spacesuit spotlights as well as the spectator spotlight.

retep998 shared this idea 03/09/17 22:58
retep998 05/09/17 01:16 flag comment
If you would rather have a graphics option for lighting range rather than lighting quality, then change the formula for calculating the range of lights from sqrt(lighting_quality / brightness) to lighting_range * sqrt(1/brightness). This would probably be easier for players to understand. If you want to avoid division by zero in the formula for falloff, then clamp the minimum distance to a small positive value by replacing distance with something like max(distance, 0.01). I look forward to seeing this implemented in Space Engineer in the near future.
retep998 05/09/17 12:07 flag comment
I just realized I made am incredibly stupid mistake. When calculating the range of the lights the formula should actually be sqrt(lighting_quality * brightness) or lighting_range * sqrt(brightness). Sorry for the confusion.
PhoenixTheSage 06/09/17 20:12 flag comment
Sorry, but I have to disagree with this strongly. This would put less power into a ship/level designers hands, not more. There is very little benefit in this...however, the actual falloff calculation does need to be smoothed out, it's indeed a bit rough.
AutoMcD 07/09/17 14:47 flag comment
The default light settings are pretty bad, my fear with this loss of control with your proposed change is that I would have to place 10x as many lights if they insist on it continuing to have such a short range/falloff. I don't want it to be bright for the block next to the light and then nothing but shadows just two blocks over. Typically I max the range and then turn the brightness down to 0.5, this provides a nice even lighting for most situations.
DevonV 08/09/17 00:51 flag comment
Ideally though, if the lights did what they were supposed to, you wouldn't need so many of them. The idea is to have them behave like actual lamps, not "light sources".
Soultechnology 08/09/17 23:44 flag comment
hopefully 'more realistic lighting' also means the game will be a bit darker WIHTOUGHT MODS so light may actually be useful instead fo a performance wasting asthetic?
StrayCargo 14/09/17 23:44 flag comment
I would also suggest that the lights and area that they light is dependent and not static. By this, I mean making it so light does not seep through other blocks near or behind it. This is really bad and should be relatively easy to fix with a small portion of code to scan the area for blocks in the vicinity of the light overall maximum radius and to run the scan only when the player changes settings on that light fixture.
retep998 15/09/17 03:08 flag comment
@StrayCargo - It's not difficult to do shadow casting, since the spotlights are able to do it. The problem is that it would be expensive. I wouldn't be opposed to having a graphics setting for it though, so people can enable shadow casting from all light sources if they have a sufficiently beefy computer. @AutoMcD - That's why I am proposing a graphics option that players can set to adjust the rendering range of all lights. Yes it will be significantly brighter right next to the light source, but it won't be completely dark just a few blocks away unless you drastically lower the lighting range in your graphics settings.
Lotheawen 15/09/17 16:59 flag comment
A great Idea! I really hope for it to be so!
Sakanax 16/09/17 10:39 flag comment
My biggest concern with the lighting is definitely the bleeding into neighboring rooms! @retep998 I disagree with the performance option, I think it would just create more of a performance drain than most would want or expect. I think the best answer to this is lights should be set to only project in a certain viewing angle. so for example a light attached to a wall should only light areas in the 180 degrees in front of it, not behind. This would make a lot more sense and be a much easier fix. Players could then increase the range/intensity of the lighting without the drawback of bleeding into the wall behind the source. The projected angle could be built int into the block, but it even better if players could set in in block options. This would solve a lot of problems without having to add shadows to every light source. BTW if you look into the level design of most games, a lot of lighting is still done without shadows as ambient light sources programmed into the level. Lights are often invisible entities that cast general lighting to fill a room. This gives the designer a lot of control over lighting with out performance hits and unwanted shadows on every lighting decision. My point that is in SE the lighting method is very typical for a game. The difference for the player is that we are limited to where we can place the lighting to make things look right. If anyone remembers the DX9 version of the game, interior lights used to project away from the block. So if the radius setting was 5, the light source was actually 2.5 in front of the block. This really helped bleeding into other rooms, but also looked weird. Really looking forward to the final lighting for the game. So tired of changing lights every time the renderer is changed!
retep998 16/09/17 11:34 flag comment
@Sakanax - A limited angle for light sources would definitely help with preventing some bleed, but bleed cannot be prevented entirely unless you perform full shadow casting. Lights would still need to cast some light on the surface that they are mounted to, so a light on a wall would need to have a slightly higher angle than 180 degrees. Regardless, that sort of change is completely independent from what I am proposing, which is to change the formula used to calculate falloff. Feel free to open your own idea suggestion for changing lights to have a limited lighting angle. It's hard to compare the lighting in SE with the lighting in most games, because most games have a static world so ambient lighting can be baked into the world mesh ahead of time. In SE all lights are completely dynamic due to the world being completely dynamic, so it is a lot harder to optimize lighting.
StrayCargo 16/09/17 12:14 flag comment
@retep998 @Sakanax I think that making lighting have an angle range while increasing performance is a bad idea. If you were to tell the game to simply run the algorithm for the light to determine what blocks are near it so it could determine where to shade light that would fix the problem. This could also only run if the user is within rendering distance of this grid and enable it so you can toggle on or off this option of rendering all the time from any distance or from only certain distances. This would fix the angle light issue that would surely cause a series of bugs later on in the game and this feature added would be able to be run for all lighting objects making it a lot easier on players when they are lighting areas up so they don't have to know angles and mathematical equation for lighting up their base. Not to mention easier hiding of your base and fewer lights needing to be placed overall. This would also give a more realistic feel to the game like if there's a window how it shines out of an open door. I also think there is already a lighting collision scanner being run for the solar panels as well as the suns overall lighting effect on blocks. So they could utilize that code and tweak it to work for all light profiles and blocks.
retep998 17/09/17 12:02 flag comment
@StrayCargo - What you are talking about is literally shadow casting. Both the sun and spotlights cast shadows, however they are also quite few in number. Interior lights however are typically placed in very large numbers. Because of how computationally expensive shadow casting is, making all those interior lights cast shadows can have a significant impact on performance. If Keen felt they could do it without significantly impairing performance, I'm sure they would.
StrayCargo 17/09/17 20:55 flag comment
@retep998 thanks for the clarification I think commenting on this issue further would be unwise since it is already planned so there is no need to discuss it further
Fluzard 21/09/17 10:53 flag comment
Why not, (like we have with the "arcade sound mode" and the "realistic sound mod") let the players choose between the older light system (arcade) and this new system (more realistic) ?