Prioritized rendering of beams/projectiles for better gameplay functionality in combat

    Joined
    Apr 25, 2013
    Messages
    1,076
    Reaction score
    186
    • Purchased!
    • Legacy Citizen
    • Legacy Citizen 2
    In the game currently theres a common problem where you cant see what the enemy is shooting at you, or what you are shooting at them, because there are too many bullets in the area that the game is trying to render, so often the most important bullets or missiles you need to see dont get rendered.

    Say for example you have a ship with lots of rapid-fire point-defense turrets and you are suddenly attacked by an enemy with missiles. Your point defense turrets go crazy when the enemy fires at you, but after about half a second of your guns going off you can no longer see any bullets coming out of your turrets anymore. The missiles rush at you and some magically disappear out of thin air as they home in on your ship, and then some finally hit your hull. Frustrated by the lack of visible PD fire, part of you wonders if your PD turrets are even working. In reality they are, but because the game prioritizes rendering the firstmost projectiles to be fired and continues rendering those same projectiles until they reach their range limit and disappate, you can only see your turrets actually in action for short intermittent bursts, This is messed up.

    Or say for example you are in a small maneuverable ship and you are getting attacked by an enemy thats using a massive amount of swarm missiles or rapidfire cannon missiles. You cant avoid half the missiles because theres so many that the game wont render them all, so you end up getting hit by invisible weapons fire and taking unfair damage that you couldve avoided if you were able to see it coming at you. Again, this shouldnt be so.

    Or yet again say for example you have a ship with both PD turrets and you use shipboard cannon or beam weapons. If the enemy is firing missiles at you, your pd turrets create such an intense volume of bullets trying to shoot it down that the game reaches your set projectile rendering limit, and so while your pd bullets continue spamming that rendering queue, you cant see any of the cannon or beam projectiles you are trying to shoot at the enemy, so its very difficult to tell if your aim is correct or not.

    These situations above can be quite annoying in combat, but why these things are actually happening needs to be laid out:
    • The game continues rendering the same projectiles even after they are so far away you cant even see them, thus wasting space in the rendering queue.
    • Projectiles are rendered on a "first-come, first serve" basis, meaning that its often impossible to see a continuous stream of fire because the game continues rendering old projectiles from when the queue had space, and continues rendering them until the projectile "dies"
    These problems could be solved by doing the following:
    • Establish a range of visibility for which projectiles continue to be rendered until they are too far away to be seen, thus the game doesnt waste space in the queue rendering projectiles nobody can even see anyway
    • Only render projectiles that are within your visible field of view. No point in the game trying to render to your client projectiles that you could only see if you had rearview mirrors or eyeballs in the back of your head.
    • Prioritize the rendering of the pilot's shipboard cannon and beam weapons so that pilots can make sure they are actually aiming at their target properly when they fire.
    • Focus on showing enemy projectiles that are closest to your ship, as well as prioritizinf the rendering of enemy weapons fire by its trajectory relative to your ship. This means the game will focus on showing you what is coming at you so that you can avoid it, instead of wasting rendering space showing you projectiles that missed and are no longer a threat.
    • Since point-defense bullets spam the queue the most, the best way to prevent their negative impact on the bullet rendering queue, and simultaneously still be able to see your PD turrets shooting at enemy missiles, is to have the rendering range of projectiles be determined by projectile strength. This rendering range drawback by bullet strength could be set to be relative to what the strongest gun is thats being used in your immediate vicinity, and could change if someone brings a ship with bigger guns. This means your PD turret's bullets can all be shown firing, but only at a short distance, since they fill up the queue so fast, and simultaneously allowing you to continue aiming at and seeing enemy fire coming at you.
    These fixes would all mean you'd be able to see your PD guns in action like a huge firework show, while still being able to dodge enemy missiles since you can see them, as well as being able to shoot at your enemy with your big guns and see every single shot you fire so you can aim better.

    However, for the game to make these kinds of "highly discriminate" calculations for deciding what to render, I imagine it might be a bit costly on CPU performance, especially if you are in a big battle. Hopefully I am wrong about that but Schema will know whether or not that is so.
     
    Last edited:

    jayman38

    Precentor-Primus, pro-tempore
    Joined
    Jul 13, 2014
    Messages
    2,518
    Reaction score
    787
    • Purchased!
    • Thinking Positive
    • Legacy Citizen 4
    Client-side frustrum culling would be a great addition. (Edit: There may already be some, but it could probably use improvement.)

    It might be helpful on turrets with AI active to prioritize a quick burst of light (billboard or bloom effect) where the projectile leaves the entity, in order to illustrate the firing of the projectile, and only render the projectile if there is room on the render queue. That way, each shot just gets a relatively quick and simple one-time, short-term visual to show that it is actually firing. (Edit: I think each cannon shot already has a firing effect, separate from the bullet entity, so that visual just needs to be prioritized on AI turrets.)

    The render-range-based-on-power idea is inspired. I like that a lot. It would make low-damage invisible shots seem strange, but that could be a simple boost to the effectiveness of smaller ships (fighters) in fleet combat, keeping the fighter relatively hidden at a distance, even while they fire.

    I think this will need to be implemented at the same time as a general overhaul of the rendering pipeline. Some time ago, I found that the visuals would be helped along if the rendering pipeline were split into two passes: solid blocks plus a culling scan, followed by effects-rendering and back-to-front transparency rendering, to fix the items-invisible-behind-glass problem.
     
    Joined
    Apr 25, 2013
    Messages
    1,076
    Reaction score
    186
    • Purchased!
    • Legacy Citizen
    • Legacy Citizen 2
    Would it be possible for someone on Schine staff to read this? That would be nice :D
     

    Edymnion

    Carebear Extraordinaire!
    Joined
    Mar 18, 2015
    Messages
    2,709
    Reaction score
    1,512
    • Purchased!
    • Thinking Positive Gold
    • Legacy Citizen 5
    Well yeah, but... They havent looked at mine yet and its been over 2 weeks :(
    You don't know that.

    They can't be expected to stop and post "I have seen this thread, but at the moment cannot make a definitive statement on it in any way." It would just waste their time and clutter things for no good reason.

    The thread is here, if they want input on the subject, they know where to find it. If they dont, or the answer is something that would be perfectly viable but would tick people off (like "We could do that, but it's more effort than its worth, so no", or it coming up a lot and them not wanting to flat out yell "WE KNOW, STOP ASKING!"), then they haven't stirred any pots by simply passing over it.

    Thread is made, it's in the right place, one must assume that it is being treated properly and move on if it doesn't look like it's gotten any traction.