Pages: 1 :: [one page] |
|
Author |
Thread Statistics | Show CCP posts - 0 post(s) |
KalOfTheRathi
CowTek
267
|
Posted - 2013.03.24 11:07:00 -
[1] - Quote
Small Missile Turrets used to work. They got the Nerf because they were dominant. Which left them Broken and they currently still are as of Mar 15 2013. This missive assumes that they were not broken On Purpose.
Since most modern Game Engines are in C++ the following information will presume Object Oriented Programming methods.
Weapon platforms in games fire various rounds and they can be implemented several ways.
Each weapon can fire a number of rounds from 1 to N. The weapon platform provides the Initial Vector for each round fired in a Volley. Each round requires a matrix to store the information needed to process it as the game engine interates through game time increments. Specifically its origin X,Y,Z, direction and Velocity. The destination's X,Y and Z will need to be included or calculated. To calculate it one needs the vector the round is going at so angles are required. If hit detection is done instantaneously the amount of processing can be reduced. If it is done as the round moves on its trajectory hit detection is done at each interation.
To limit the number of objects used one can limit the maximum of rounds in flight at one time to One. This was how the Arcade Game, Battlezone worked. Only when the current round hit something and was destroyed was another round able to be fired. This could be implemented quite easily by disabling the fire trigger as long as the round was in flight. In a modern game the round's object might be freed or it might be a static object with a flag that indicated it was in use and thus unable to be fired again until it has hit its target or was destroyed.
When multiple rounds are allowed in flight each round can have a separate object allocated for it. To reduce memory thrash a fixed length array of objects could be used instead. The array could be part of the weapon object or allocated when an operator accesses it. There are several ways to calculate the length of the array such that a ring buffer algorithm can be used. Using the Rate of Fire for the weapon and whatever the limiting factor the length can be determined by the maximum rounds that would need to be tracked. Such algorithms are common place and should be easy to implement for any competent programmer.
When the weapon platform is Mobile several additional factors come into play. First the vector for the platform must be factored in. That will effect the origin of each round as it leaves the weapon. Depending on the velocity of the platform that effect may or may not be significant. In DUST the alledged speed of the rounds is highly suspect versus the documentation. Which may be nothing more than simplification of the firing algorithm with little to no updating of supporting documentation. Also the speed of the platform relative to the speed of the projectiles should virtually eliminate any adjustment to the initialization of the round object. If one compares the speed of the HAV at 24/mps to the speed of the most rounds the difference caused by the movement of the platform Should be negligible. This appears to be true except for Small Missile Turrets.
Now consider the current functionality of Missile Turrets.
If a platform is Stationary it works as one would expect. When the weapon is pointed at a target the missiles leave in the direction of the barrel and in the case of the Large Missile Turret each missile appears to leave in parallel to it and each other. Whether they do or not is not important as they Appear to do that to the operator. Each additional volley follows in a similar fashion which is predictable and allows the operator to anticipate some level of success. Although any modern (ancient to EVE) system would adjust the spread to hit At the target for maximum effect.
The Small Missile Turret platform is always mobile. However, the missiles themselves do not work Correctly. Each missile may leave the weapon at significantly different angles than the ones preceding it. Up to forty degrees; This approximates at twenty degrees left or right off alignment with the barrel. It might be more but my observations indicate the is the Minimum deviation. This obvious mistake breaks immersion and frustrates the operator as the firing of the missile devolves down to random operation. It is worse for those of us that were around when they worked correctly.
Small Missile Turrets work best when the platfrom is stationary. If the SMT is on the top of a HAV And the HAV's turret is Aligned with the body of the HAV And the HAV is Not moving the turrets Mostly work okay. However, if any of those conditions are not met Exactly the missiles Fail. Just turning the Main Turret away from center on the HAV itself will cause the SMT to fail.
However, the Cycling variants work better. The operator keeps the trigger pulled once a target is decided on. Each additional missile tracks the missile before it as expected. This is true even if the weapon platform is moving. I am not certain it is Perfect but it is not as obviously Broken.
Cont'd. |
KalOfTheRathi
CowTek
267
|
Posted - 2013.03.24 11:08:00 -
[2] - Quote
Results of Small Missile Turret Tests.
SMT that are Non-Cycling work under only one condition. The Vehicle they are mounted on Must be Stationary. It there is motion, even straight forward motion the missiles leave the launcher in the Broken Wildly Different directions that are I am defining for the tests as Fail.
I tested a Militia Small Missile Turret on a HAV and it shows the same behavior as the LAV mounted versions. The has the additional sensitivity to Alignment. If everything is aligned correctly they work fine. If Anything is not aligned then the missiles leave in the Failed pattern. Additionally I was able to test, without the driver being aware they were part of the test, that any motion of the Large Turret caused the missiles to fail. When the HAV itself was in motion they settle firmly into Failed mode and any hit was clearly divine intervention.
The Cycling Missile Turret does not Appear to have these problems when stationary. Also, they Appear to have less of the Fail mode when in motion. I was unable to determine if they work absolutely correctly during all motion combinations.
What is the problem then?
The Initial Vector for Individual Missiles are not being initialized properly. One possibility is that the angle in the matrix is not correctly calculated and/or is not initialized at all. This would be the classic Software Bug of either an un-initialized variable or pointer.
One possibility is the Initial missile object is initialized Left Handed when the rest of the system is Right Handed. Or one step of the calculation that is used regarding platform motion is incorrect.
Whatever solution the Cycling variant uses it should provide enough of a clue to a programmer on what should be done for a singular expression of the missile process.
My initial suspicion was that the math to manipulate the Matrix for all Cycling missiles was Correct while the Initial missile in some cases of Small Missiles was not. If one assumes standard OOP practices the initial missile for each should use the same object/function to initialize it. Then the additional missiles are iterated correctly as the Cycling nature of the turret come into play.
After the test results, however, I suspect it might be a little more slippery than the above. The problem appears to be Strongly bound to motion of the vehicle the weapon is mounted on. It does not matter which vehicle they are mounted on only that once it moves the Bug is always evident. The code to include the base vector, including velocity and direction, of the vehicle is probably at fault or would at least be a good place to start the investigation.
Considering that Blaster of all sizes [Appear to work correctly the code that does the math should be readily available.
One last idea for a place to look is based on the fact they Used work. Then they were Nerfed. How did the Nerf get implemented? It should have been only some tables or control files. However, if code was actually modified at that time then that same code must be highly suspect.
Note that [u[None[/u] of the Turrets appear to fire at nearly at the rate the documentation states, in particular the Large Rail Gun visually travels significantly slower than the documentation. I was unable to determine if this is just a simplification of the firing mechanisms as dictated by graphics loading versus simply not working correctly.
Cont'd |
KalOfTheRathi
CowTek
267
|
Posted - 2013.03.24 11:08:00 -
[3] - Quote
As a previous manager of programmers I would look at these factors:
Who programmed Each of the various Types of Turrets? I would surmise that Programmer A wrote Large Missile Turret functionality. That Programmer B wrote the Small Missile Turrets and possibly Programmer C wrote the Cycling variant or, maybe, used the Large Missile version to program the additional processing necessary to handle the additional missiles. The variation from firing multiple missiles at once to firing multiple missiles sequentially could allow this. Simply adding a timer based on Rate of Fire would allow a simple reuse of the existing code. Then possibly a new programmer handled the actual SMT Nerf which would allow All the previous code to be written by the same programmer.
Some additional confusion is: Why are most Missile rounds non-functional when All Other rounds fired from movable platforms are working correctly? There is no real difference between them except the animation sequences required for each. A Large Rail Gun round is nothing more than a faster, longer range missile with larger damage. The Blasters fire faster rounds than the Rail Gun. However, they fire a constant stream, until overheating, without their rounds heading off into weird vectors.
If they all use the same code then how did the SMT portion generate Failures? Here I would suspect OOP itself. It is easy to override functionality in C++ and it is possible that something was done to subvert the proper calculations.
Also, the remaining SMTs are very similar to the CSMT except for the Rate of Fire, which is halved when Cycling. Why do they act differently? They should be exactly the same except for the timing of the firing cycle. This Might be explained by the fact that most Players do not use them this way but that seems like a stretch.
The last probable that I can think of is that the SPE code to handle these was modified by the Missile Nerf programmer or during that time period. The SPE is very interesting solution set but is prone to errors as they are the very reason the PS3 took such a long time to get to market and have reasonable support. Although one would think that UnReal and/or your Physics supplier would provide a library function to handle something that is so common.
A proper solution would be generic with round type, damage, splash, speed, ranges min and max. This would allow all types of rounds to use optimized code.
I had initially thought I could provide coding examples in C of solutions for the above. Now however, after considering the functionality of the Cycling Missile Turret it should not be necessary. If asked one would have to take into consideration that I only program in C and assembler and someone else must be inflicted with the task of getting your C++ programmers to understand my C code. I would be available to review the code or help with the debugging in a non-PS3 environment, if that is even possible.
You would have to contact me personally and not on the Forums as any more than this information would require compensation. I do not consult for free when somebody or some corporation is going to make money off my work. I never have and I never will, even in my current retirement. Were you to switch to an Open Source license, which is laughably unlikely, that might not be the case.
TL;DR I am nagging CCP/Shanghai, again. This time it is regarding the currently Broken Small Missile Turrets. It is my hobby. Leave them to me.
If any of you want to discuss programming start a thread in the Locker Room and link to it in a comment. Beware that the Forums do not handle the 'code' keyword. I do not discuss favorite scripting languages, dislike OOP in general and C++ in particular. I have worked on various operating systems including device drivers, Unix, Linux, several Real Time OSs, several interpreters from scratch, many custom systems for industrial and specialized products, hate Windows, spent years optimizing anything and everything in software to make it faster while being paid to do so and was also paid to evaluate software and software developers including making firing recommendations. |
KalOfTheRathi
Talon Strike Force LTD
303
|
Posted - 2013.04.01 12:33:00 -
[4] - Quote
Here is an update and the news is not very good. It is informative, however, and that alone is worth updating this Bug report.
GMT Mar 30, 2013
From additional testing it appears that All Small Turrets suffer from this broken behavior. I do not say all lightly as the Blasters are difficult to determine if they behave correctly or not. However, since the Small Missile Turrets are definitely broken and my recent tests show that the Small Rail Gun Turrets are Broken in Exactly The Same Way makes me want to assume that all Small Turrets are broken.
The good news it appears that Any Rotation of the Large Turret will cause any round leaving the Small Turret to be off either left or right of the proper trajectory. Once the Large Turret stops the Small Turret returns to reasonable behavior. Without some debug output I would be unwilling to say that they are actually correct in Any behavior after the results of the debugging and testing I have done to date.
The reason the news is good is the effort to debug this with the software in hand should be simpler when one realizes it is all wrong. It is possible that a solution is very simple to implement. Simply Remove the Large Turret Rotation from the calculation as that appears to be the root cause of Most of the problems. I did not say All, however.
It would be interesting to determine if the Small Blaster Turrets work correctly and Large for that matter. Again, without debug information or a dump of the status of each round during a test I would hesitate to state they work correctly. My experiences in Small Blaster Turrets leave me to suspect Something is Off as they do significantly less damage to an individual Merc than my calculations indicate they should. I know how to lead the target, I can zoom with the correct turret yet killing a Scout Suit with a Small Turret of any type is surprisingly difficult. This also ties into the reduced Rate of Fire compared to the out of date and never updated documentation; Which remain as the only source of information the Mercs have available to base decisions upon.
One would hope that the looming and intended Balancing of the Small Missile Turret will include making them Work Correctly as well.
DUST has three Small Turrets in the game; The Small Rail Gun is Rarely used while the Small Missile Turret is the butt of jokes. The Small Blasters are the only variant that are worth considering and yet the situation leaves one wondering why Any of them are even in the game? |
Sontie
Ill Omens EoN.
225
|
Posted - 2013.04.24 00:01:00 -
[5] - Quote
bump, because, eff these turrets (at least on ground vehicles)
actually, I noticed I'm a lot more effective with a dropsuit turret. |
Chris F2112
187.
58
|
Posted - 2013.04.24 00:10:00 -
[6] - Quote
I believe small blaster turrets are the same way. As someone who often guns from a dropship, it is impossible to hit people if the dropship is moving. The animation is separate, and does not denote where the actual shots are landing as far as I can tell. |
Django Quik
R.I.f.t
368
|
Posted - 2013.04.24 00:36:00 -
[7] - Quote
Great analyses Kal - and there was me thinking all you do is troll around here ;)
Sadly, i have a feeling one of your very early assumptions was at least a little off - this was intended.
When the missile nerf happened, CCP seemed to do 3 things: reduce damage, reduce splash and reduce accuracy. It seems they May have done this to all small turrets and also added modifying factors for vehicle movement too. The SMT got hit worst and the dispersion is clearly way way too wide in the worst cases.
Whilst i can see why there things were added to tone down small turrets and especially SMTs, they really went too far. Im really hoping this is among the many vehicle changes that have been hinted at lately. And sadly, that's probably the worst part of all this - you've done all this analysis but in a couple of weeks it's going to be irrelevant anyway! Real shame but great work there anyway. Catch you around. |
KalOfTheRathi
Talon Strike Force LTD
355
|
Posted - 2013.04.24 03:38:00 -
[8] - Quote
I will remember your comments the next time you ask me to rep you; Then I will count to ten; Then I will rep you.
I spent a month on the problem and it took a bit of time to write it up. The Mar 24 date of the posting was when I finally finished the work. It was more effort than I originally thought because the problem was more extensive and worse than I thought. That required much more testing and without help it was difficult to accomplish.
I fear you might be right just as much as I fear the code is simply wrong. The reasons for doing a Nerf on the Small Turrets were valid but the method suggested by you is horrible. Let's just make it completely wrong! Great. My analysis isn't much better, in that regardless of the reason the result is a significant mechanic in the game is broken. Whether that is on purpose or not doesn't actually matter I suppose. |
KalOfTheRathi
Talon Strike Force LTD Orion Empire
419
|
Posted - 2013.05.08 11:51:00 -
[9] - Quote
Here is the obligatory update for Uprising also referred to as Bad News.
The Small Missile Turrets Still Do Not Work.
The first few missiles out of turret for any firing session can be off by almost half the width of the display. At times it is impossible to actually see where the missile landed, which made for some confusing testing sessions.
If the main Turret is moving at all the SMT on top is useless. Best to wait until he stops.
If the LRGT is completely still then after a few shots the turrets seem to correct themselves somewhat. If, however, one pulls the trigger for each missile the odds on a missile going where the turret is pointing are nill.
At least it was easier to check this time and didn't cost me any LAVs or Suits. |
|
|
|
Pages: 1 :: [one page] |