Showing posts with label Bugs. Show all posts
Showing posts with label Bugs. Show all posts

Tuesday, 25 February 2025

Outlook Continues to be Dreadful

Today Microsoft Outlook is back at it's old habits of being utterly dreadful.


So I need to put "29th" with the the in superset, it used to do this itself, but not any more.... now you get "2  h" in normal and "9t" in superset... Dreadful!

 

 

Sunday, 1 August 2021

My Home Game Engine - Motion Decay (Physics) Bug

A few of you may have noted I've been writing my own graphics engine at home, this has fast become my own home game engine; which is more or less just a play ground for me play about with.

And over the weekend I've started to flesh out the physics engine, beginning with a physically reactive camera.  I want to make this thing tilt and shake and move like it's organic, not on the end of your keyboard or mouse.

The motif is going well.

I designed a head for many edge cases I expected, one of them being floating point in accuracy and so I built two things into the movement, first a dead-zone, so zero isn't the ONLY value which doesn't move the camera, instead an area of 0.0004 around the camera forms a null - don't move - zone for all my motion calculations.

And the second was the force of friction or wind resistance, this is just called "Decay" in my engine, you decay from moving to  no longer moving.  Because wind, water or surface friction are going to come into play at different times and from different directions on each object.

Anyway, do work out the motion which needs applying to any object I build a vector of motion actions, these themselves are stored in a set of efficient constexpr static arrays per object type; for not I have so few object types this is fine, it leads to faster code (one day, if I have more than ten moving object types I may need to revisit this.

Alas, this smartness immediately bit me in the arse... And I just spent nearly half an hour pawing over the wrong piece of code to figure out why when switching to an object known to be at rest (0, 0, 0) with no actions on it... it'd slowly jiggle backwards at a very slow rate.

I checked my maths, my direction vectors, my initialization of the actual speed of the object, everything checked out.  I made sure I was giving no inputs, so I wasn't landing in the accelerate or decelerate motion actions.

So I was properly confused, I took a moment and I re-read the code I'd done yesterday (oh the difference a day makes) and suddenly I realized I had two kinds of decay... if you're moving forward you slow down... and if you're moving backwards you also slow down... both heading to zero, or at least the 0.0004 null zone.

Other objects were not moving, just this one particular type... and having a quick squizz, sure enough the acceleration and deceleration decay were BOTH being applied, even at rest this object would jump to a speed and start to decay, this would then swing it below -0.0004 in the null zone and the deceleration decay would kick in... and the deceleration was MORE than the acceleration so then the object was trying to decelerate a little but more each third frame... zero to backwards to null zone to backwards to nullzone... on and on, tiny increments.

This was a flat out bug, the decay should have only been applied to make the object come to, but not beyond the nullzone.

However, I was still perplexed how the forward decay was being applied, sure enough it is, in the above call to "GetMotionActions" we can see it's both ForwardSpeedDecay and BackwardSpeedDecay are "valid" motion actions for objects receiving no input.

And they'd been doing this all the time, every frame... the specialty of this one particular object?  Just the numbers, the profile for motion, specifically the braking, was a larger number taking it beyond nullzone.  And this is multipled by delta time for the frame... all following frames are small, short, but the first frame?... or a frame after a break point... HUGE....

In short I made a bunch of mistakes, but I learned, and I enjoyed myself.  This is perhaps the key thing when trying something new.

I also have a healthy appreciation for just taking a physics engine off of the shelf having done some of this ground work - and I'm literally just playing.

Sunday, 20 January 2019

C++: Undefined behaviour from realloc and the Clang Optimizer

I was wondering around in some system code and found a strange behaviour between two modes in a piece of code, where the code switches from double to triple buffer mode there's a problem, we've already got two buffers of everything we just want to allocate another but the underlying structure for sets of buffers wants to own them all... So the code went from:

SetOfBuffers
{
Buffer* one;
Buffer* two;
}

To:

SetOfBuffers
{
Buffer* one;
Buffer* two;
Buffer* three;
}

Creating the third buffer is fine:

SetOfBuffers::three = malloc(X);

But, the first two is a re-alloc, to reuse the existing buffer:

SetOfBuffers::One = realloc(OldSet::one, X);
SetOfBuffers::Two = realloc(OldSet::two, X);

The problem?  I'd start to modify the values in the new set of buffers, the third buffer being used and present.  Then the first buffer would be changed present... The second buffer changed present and the information is wrong (I over simplify massively here).

Anyway, I was remotely SSH'd into my server for this, so I went to Visual Studio, same code... Worked fine... So I go into my local VM and it's fine too, so I went back to the server and compiled manually and suddenly it's fine too.... WTF.

I literally spent an hour looking at this, the problem?  Well, it appears to be a bug in Clang, the reason the problem disappeared was my Makefile contains a $CC constant for the compiler to use and it was "clang" when I built by hand I used "g++".  Worse still, if I switched to a clang debug build the code worked fine, so this was something about my compilation process not a bug in the code per se.

So, perplexed I went in search of an answer.  And it appeared to be something about the clang optimizer, about which I found this talk from CppCon 2016.

Where there's this example:

#include <cstdlib>
#include <cstdio>
int main ()
{
int* p = (int*)malloc(4); // The original buffer above
int* q = (int*)realloc(p, 4); // The new pointer to the same old buffer
// Allocate a vlaue
*p = 1;
*p = 2;
if ( p == q )
{
printf("%d %d\n", *p, *q);
}
}

What do you expect this code to display?... Well, I expect it to print "2 2".  And it does on VC and G++ and even clang without the optimizer...





But you optimize the compile and its wrong:


Now, this is undefined behaviour and not caused by your code, it's the optimizer and very scary.  Not least as this was identified a while back (the talk along is from 2016) and g++ has solved the problem... Eeeek.

Thursday, 25 January 2018

When Software Tries to be Cute

Developers of the world, unite, and stop listening to sales-folks who say that variety is the spice of life, that you need to make your programs do cute things, like vary the replies it gives.  You are only causing yourself more trouble testing, debugging and annoying your users.

Users of the world, unite, and stop wanting stupid cute differentiation replies from programs to make you feel special.  You are not special, you are one of very many using the same program, be like normal people and expect the action of something to have the general same reaction so you can see when things go wrong.

I bring this up, as I recently had the Ultimate Ears Blast App, and it was too busy being cute with "just a moment", "hang on in there", "be right with you" bullshit replies to actually work!  Yes, it looked to me they were trying too hard to be hip that actually hit the mark!

And YouTube has just done the same thing, check this out....


Same machine, same time, same browser, same YouTube account target... Two different replies... Just to be cute, and one is broken!... GG YouTube, GG Google...

Oh, and has anyone actually ever worked in the YouTube website?... It's a nightmare to navigate, with things hidden and changed, as a content creator, you go to try and get your own home channel, it's a nightmare, you have to view the whole site, select "Library" and then "Home"... You used to be able to press one thing "My Channel/My YouTube", so simple?  Why change it?.... To be evil of course.

Tuesday, 14 February 2017

Programming : Python MySQL Connector Debug

Today, I was asked to look at a server for a friend, their problem... "It just stops working after a few days"... A few days turned into "between three and five".  Doing some mathematics I found they had between 125 and 350 unique visits to the server, each unique visit represents one customer or one remote unit of their fleet.

They relay their data from these to individual database instances on one MySQL Server, so there is about 30 customers each with many unique databases.

The problem?... Well, I find this very distressing, as they open one connection for each arriving remote client, use it and then they closed it... Right... RIGHT?!??!!

import mysql.connector

l_total = 0
while (True):
    # Count
    l_total += 1
    l_res = l_total % 100
    if l_res == 0:
        print (l_total)

    # Open a connection
    con = mysql.connector.connect(user='root', password='***', host='localhost', database='Pickles')
    cursor = con.cursor()

    # Query
    query = ("SELECT * FROM VeggiePatch")
    cursor.execute(query)

    # Retrieve the data
    cursor.fetchall()

    # Close the query cursor
    cursor.close()

    # Close the Connection
    con.close()

This is my test code based on the way their production code works, as having read the error log I see the problem is in the connector constructor and delves down into the networking code.

This of course crashes after around 33,000 cycles.

They're not willing to change their script "willy-nilly", I in fact think they're petrified I've found this problem.  Googling around I don't find any official explanation of this error, only anecdotal forum posts about the MySQL Connector not cleaning up after itself and so reusing the sockets fails over time.



The better solution is to garbage collect the connection each cycle...

import mysql.connector
import gc

l_total = 0
while (True):
    # Count
    l_total += 1
    l_res = l_total % 100
    if l_res == 0:
        print (l_total)

    # Open a connection
    con = mysql.connector.connect(user='root', password='***', host='localhost', database='Pickles')
    cursor = con.cursor()

    # Query
    query = ("SELECT * FROM Tickets")
    cursor.execute(query)

    # Retrieve the data
    cursor.fetchall()

    # Close the query cursor
    cursor.close()

    # Close the Connection
    con.close()
    con = None

    gc.collect()



I also tried to garbage collect each time I printed the the "total", each 100 passes, but this still crashed, the fixed loop here has so far done just under half a million cycles without issue....


Friday, 15 April 2016

Windoze Security Loop Hole

This is an example of why I hate Windows...

In a curious case of a security loop hole, in the office, we have a supposedly locked down security situation, none of us are local administrators on our machines, and neither do we have access to any of the very useful parts of our machines.

This is a real pain, and one whereby we often have to call up on the IT Administrators to come and physically, or remotely in a remote desktop session, enter their password for us.

I personally disagree that educated users such as myself have to put up with this situation, I agree totally with data privacy and integrity, however, I wholly disagree with locking people out of things on their machines, such as defragging, or emptying the temporary folders... Or in the case of a programmer, not being able to empty Prefetch or write an ISO to an SD Card.

Anyway, today, I had to write an ISO to an sdcard, the result... I called IT and asked them to run the program for me....


So, just to be clear, I'm logged in as myself:


I am unable to access parts of the system, like the Administrators desktop folders...


I get IT to log the ISO image writer as their elevated user, and the loop-hole begins, you see the program has a standard windows open dialog.  And this will work with any standard windows open or save-as dialog, in any program... The program is running as Administrator at this point.

When I select to browse to the file to open, the default folder is the administrators folder by name...


However, because these dialogs all use explorer under the hood, and it's all integrated, they do far more than select a file for you, they let you create folders, browse things and even launch programs...

Yes you can launch a program from a save-sa, or open-sa, browsing dialog!


Lets try to run a command prompt...


Oh, look, it's running as Administrator...


And now I can see the Administrator account directories, which were hidden from be in my own logged on Explorer window..


And I can clear the prefetch folder in windows...


This is clearly wrong, but it's all caused by windows, so what's going on?...

Well, instead of asking the current session (logged in as regular old me) to start the new application instance of Command Prompt, it's asking the application owning the browsing dialog, so command prompt is started under and inherits the user credential level of that program, not my whole session.

What should have happened, well, I believe windows, starting a new program from an elevated user like this should have re-prompted for the user's password again.  And indeed, trying to start certain files from the launched command prompt it does go back to the session level to ask for the credentials to start the application with.  But not asking and just starting the new application is a problem.

Solutions I can think of include, setting the administrator level account to timeout its password every minute, so one reduces the amount of time a regular user has an unaccredited ability to launch programs.  And within a minute the administrator could have started anything the user wanted and left.

A better solution however, might have been to have a user elevation level which could give access only to what the regular user wanted, permissions to use peripherals perhaps, rather than start applications.  And the Administrator should not have just started the application as themselves, but should have started the application under themselves as the Hardware only user.

There are other solutions, and I'm sure many I'm not even going to think about, because I don't use Windows systems.  If I want security, I simply use Linux and set things up correctly.

Wednesday, 2 December 2015

SDL - Bug or Problem with SDL_RenderFillRect

Got one of those annoying debugging problems going on, I'm not sure whether the problem is with the presentation buffer, or the data I'm drawing.


This code, draws a cross within a rectangle I've defined, and then it draws a hollow rectangle around them... Annoyingly, the calculation I've used for adding the width & height to the location makes sense, but it appears the rectangle is one pixel less in width... So the SDL call calculates or 
uses the rectangle to draw.


But, that's not the problem, below the code drawing this, I've asked it to actually fill in the whole rectangle...


However, the result does not fill in the rectangle...


I've tried this in both Visual Studio and Code::Blocks, neither seem to want to fill in.  I'm using the same colour, blend and settings, as you can see in the final code listing, just the call to the render fill rect function does not render a filled in rectangle.

Any ideas?

Monday, 23 November 2015

WarThunder - Hit Detection/Reporting in 1.53

I've been having some issues with hit and damage reporting on WarThunder, and I wondered whether I should take this to the public forum or not for a few days...

Firstly, I was having issues with my Tiger H1, I'd get hits, and find them be glancing blows or they'd penetrate knock out crew, but never ignite fuel or ammunition, then I'd get hit and find my ammo burning so fast as to make me look like a zippo.  This discrepancy was not resolved for me with any change of ammunition, and as I changed to other vehicles the effects became more or less pronounced, but were always there.

Switching to aircraft, I found hits were registered a lot, however, many were sparks... But more annoyingly were hits reported to me as critical, or even pilot kills, which had no effect for the opponent... Here is my coverage of just one such instance, I swing into the path of a TBD, I aim for the cock-pit and get a report of the pilot unconscious.... Gun camera footage style, we can see this from the replay:








Clearly, I heard the ding of the critical, and the reported pilot unconscious.

So, at tree-top level, pilot unconscious, in a left banking turn... How did this TBD fair?...








Well, it flew on, and indeed on the return of the circle was firing it's .50 cal, main armament in the wings.

Unfortunately, I collided with it, whilst staring in disbelief, but this is getting typical, that aircraft should have gone out of control, that should have been a crash, my aim was true, and intentionally on the cockpit, both rifle calibre and 20mm munitions struck that area from my point of view.

From his point of view however, they only struck the left wing!

This is clearly something of the server-side, the WarThunder clients don't make decisions as to whom as shot whom, else they'd be open to external influence; we know they're not.  But clearly the server informed my client that I'd knocked the pilot out, when clearly he was still there flying.

Frustrating!

Wednesday, 1 July 2015

WarThunder - Battle Log is Useless

So, another stealth change, brought in by Gaijin has been a separate tab on your results screen, to let you see your battle actions... Now, I assume this is used to determine how "Active" you have been.  A statistic I've long had issues with, as flying present 100% in the cockpit I've had very low % activity rates, especially in bombers where you're doing your job flying to a target but only get 3% activity ratings.

Anyway, have a look at my results...

Seven ground kills and an air kill assist... I was flying out an Italian 3 engined bomber to get it spaded... You know, a ground strike mission, and I have the most ground strike kills on my team, but I'm still only mid table... GG on that one... But then look at my battle log...


Reading that you'd think I've only killed four ground targets... Three target kills are missed, as is the air assist kill!... Totally rubbish, the first rule of data presentation is to present the correct data, and this is just wrong.

Thursday, 16 April 2015

Dungeon Crawler - C++/SDL - VLOG 3

The third VLOG in this on going series, see's me finding I've unexpectedly broken token collision detection.... But I'm; at last; loading maps from the MapEditor.

I've also fixed scaling issues which were causing the map to scale to the screen when it was a map which was intended to be smaller than the view area of the screen.



Update 3.5


Tuesday, 28 October 2014

Elite Dangerous - BETA 3.0 Servers Down

"We have all the major problems of a theme park and zoo all rolled into one"

Yes, its a quote, and an apt one today, as Elite Dangerous (BETA) 3.0 has hit the downloads, and even with it being a BETA Frontier Developments have two great big things in their favour when it comes to provisioning their servers for the data load they're going to take....

They know exactly how many people have bought into the game... And they can control how they turn the servers on or off.

Now, I accept they're not expecting everyone to play at once, but with a major update which they've been touting for days, if not weeks, and everyone being so intense about playing the game they've bought into then they SHOULD have expected a massive data load demand today.  Extra now and then level off when the demand plateaus, that's standard fair.  And sadly something one would hope was catered for, but which has not been.

Then the control they  have, it seems so many games design their connection mechanics around a point of access and server, so either some log-in and then direct to the data stream or a direct connection to the server, the former allows more spreading of the load, but only if the log-in server can keep up with demand, the latter opens a huge can of worms but should with scaling work more consistently more quickly.

So why does this bother me?... I've not even bought the game?... Well, it bothers me because too many people, too many players, who have paid up more than the release date cash to play are accepting this is okay, this is a beta, they cry, this is just a test, yes it is, and it's a failure, just like the test at beta 2.0 release was, there has been no difference or improvement if servers went down then and go down now, the server is the beating heart of most all the Elite Dangerous features which push it beyond my beloved Frontier Elite II... But if it is not stable, if it has no short term flex how can it flex in the long term?... Longevity, I return to it again!

I learned last night that yes you can play single player, but you still need to validate against the server, and the server was down... So I'm potentially buying an Elite game which has a finite life span!  They turn off the servers, I can't play!

I still have my complete box including 3.5" diskettes for Frontier, I can still pull an Atari ST out its box and I can still play it... If I get the Elite Dangerous : Mercenary release... I want to keep it in its box and keep it as long and I want it to be as good a game (which I don't argue it is, a far better game already) but I don't want to beholden to a server which can be shut off.

As I've previously mentioned David Braben has had his ups and downs with the Elite franchise, its ended up in and out of court, we've waited so very long for a new Elite game, and it looks brilliant, hats off to them, but for my money I want it to last, 5, 10... 15... 20... how about 35 years... Will the company still be in being?  Will the servers still run?

We've all seen what happens to Space MMO's when they turn the server off... So, longevity for Elite Dangerous... Or, Frontier Developments, let us run truely stand alone, to play single player on our own machines alone.  Yes validate stuff earned in certain single player mode before it can be moved into multi-player, I understand that, but I want to feel alone, and in awe of the sheer scale of this game, not beholden to a server with more cuckoo spit & duct tape holding it going.

Tuesday, 21 October 2014

WarThunder - Gaijin's Russian Bias Shows Doesn't It.

Last night I went for a few flights in various BF109's in WarThunder... It was an utter and total disaster, I didn't make a single air kill, and twice ended up getting bounced whilst in the middle of my dive on a target and having to try and flee.  And only once did my attempt to flee and calling for help get a return from my team mates... So my thanks to those chaps that time, you kicked arse...

However, after a couple of hours I had my BF109E-3, BF109F-1 & 2, BF109F-4 and BF109F-4/trop all in repairs... My frustration was palpable.

I reviewed my replays, I thought about what I was doing wrong, and I thought about my opponents... Some of them were just excellent pilots and out flew me, I accept that, however, I looking at the roster of opponents who had shot me down... La-5... La-5.... Hmmm... La-5..... I-185... There were a lot of higher battle rating (BR) opponents than my measily E-3 or F-2 (the two planes I flew repeatedly)...

Now I'm no fool, my aircraft handling though not perfect is okay and in Simulated Battle you expect an amount of luck, but my luck was running so bad.  I switched to Realistic Battle, maybe I could identify what I was doing wrong by seeing the target tags coming towards me...

I could not see any tags... I don't know if this is a feature now, or something about skills, or just a bug... But I had to close to within 1km of a target dot before I got to see its label text... and when friendlies were tangling with enemy planes I saw the blue of the friendly from miles, but never saw the enemy... Tracers and flame and death, I saw plenty of, but actual aircraft/player legend text, not a jot of it...

So at one point I'm in the F-4, and I'm 800 meters above a pair of La-5's... I know I'm going to die, so I invert, pull through a half loop, and when out of the loop I'm the right way up going to opposite direction at about 550km/h... And I accelerate away, I'm going maybe 580km/h, and I reckon I'm around 10km away from where I saw the targets, I'm low on ammo anyway, and 7 minutes of fuel, so I report heading to base.

I check my shoulder, just as a stream of red tracer goes past... both La-5's are right there... they've climbed 750ish meters and caught up over 10km from behind a plane going away from them at over 550km/h... I dive away from them and am going 715km/h, opening the distance between us... But their fire is hell accurate, I can see the separation on the mini-map its over 800 meters between us, but they're still shooting...

These are La-5's... with twin 20mm cannon, their cannon should be dry>?!>?! What the hell... I lead them off and over the airfield, they break off only when the AA has holed one... but as I break into a rising climb turning my now 600km/h speed into about 900 meters of altitude and levelling off to assess my situation, the other LA-5 does what can only be described as a UFO move, it rolls and almost flat spins around and comes back at me, acceleration was incredible, the aircraft was level with me, having used his speed to climb... and he's flying straight and level.... over 8km... be cross the airfield and forced me into a split-S to avoid his head on in what felt like 10 seconds... I literally had no come-back.

When we read historical accounts of the performance of the La-5 it does not stand up to the scrutiny of its performance in game, I get that Gaijin have their own ideals of history, they say as much in one of their news posts:

"the British have their own history and their own view on the Second World War and we, the descendants of our Soviet heroes had our own war and own memories of it" - WarThunder Blog.

You don't have memories young sir, you are not over 80 years old and were of an age to have served, your parents at a push, or your grandparents certainly may have, but you do not have memories.  What you have are recollections, those rosey tinted, glossy postcard photograph ideas of what it was like.  And I can only really stress that in my opinion the balance of plane performance, especially Russian plane performance, is rather more rosey than it should be according to the history at hand.

"the La-5FN excelled at altitudes below 3,000 m (9,843 ft) but suffered from short range and flight time of only 40 minutes at cruise engine power. All of the engine controls (throttle, mixture, propeller pitch, radiator and cowl flaps, and supercharger gearbox) had separate levers which served to distract the pilot during combat to make constant adjustments or risk suboptimal performance. For example, rapid acceleration required moving no less than six levers. In contrast, contemporary German aircraft, especially the BMW 801 radial-engined variants of the Focke-Wulf Fw 190 front line fighter, had largely automatic engine controls with the pilot operating a single lever and electromechanical devices, like the Kommandogerät pioneering engine computer on the radial-engined Fw 190s, making the appropriate adjustments. Due to airflow limitations, the engine boost system (Forsazh) could not be used above 2,000 m (6,562 ft). Stability in all axes was generally good. The authority of the ailerons was deemed exceptional but the rudder was insufficiently powerful at lower speeds. At speeds in excess of 600 km/h (370 mph), the forces on control surfaces became excessive. Horizontal turn time at 1,000 m (3,281 ft) and maximum engine power was 25 seconds." - 

Or perhaps
"In comparison with the Bf 109 the La-5FN possessed a slightly higher roll rate, however the Bf-109 was slightly faster and had the advantages of a smaller turn radius and higher rate of climb." - Hans-Werner Lerche (ISBN 0531037118)

Even ignoring the performance issues, why was my BF109F4 being pitted against La-5's?... The F series of 109 was ubiquitous yes, but in 1942 when the F4 was really at its height the La-5 was still under development:

"from the first tests, which began toward the end of March 1942, it became clear that the new variant was a marked improvement over the basic model" - about the LA-5 from www.century-of-flight.net.

The timeline does not work out, the La-5 should not have been present to shoot me down perhaps?... But its UFO like performance is clearly not warranted from the history.

I know already what Gaijin's response would be, if they dained to give one, and that would be that this is a BETA, and that things can change, but I believe for too long and too many comparisons; which I have been through; the Russians get the better of it over the Americans, the Americans get the better of over the Japanese and the Germans generally struggle to compete save when we get to the very highest tiers.

The BF109F series under-perform, the accepted best aerobatically able 109's and they're pitted against floating Russian crates which historically were not overly available*, the BF109G series are often forced to fight off of their comfort zone, i.e. the BF109G-6 designed to intercept bombers is pushed into dogfights with other fighters, where its climb/weight disadvantage soon tell...

To then rub salt into already open wounds I flew out in a Russian plane, in simulated mode, for the first time ever, took the Yak-7 which was completely stock out for a fly out... Immediately entered a low-level dogfight and in both the horizontal and vertical could out turn and out perform German BF109F1's and an FW190A-1... And got two kills!.... I gave up playing for the night right there, disgusted how easy the kills were, when ammunition, aiming and the general low-tech of the Yak-7, a trainer pushed back into front-line service, bested some of the finest fighter aircraft the Luftwaffe fielded.



* Losses of La-5's in 1942 dropped dramatically, this wasn't because the La-5's were doing well, but that so few La-5 were produced that there were none-left for the jagdflieger to shoot down, only in 1943 as production ramped back up did losses increase in relation ship to the number of available aircraft.  This is the kind of history ignored by Gaijin and their apparent blanket rosey tinted view of history.

Monday, 8 September 2014

War Thunder - Bugs and Brush Offs

Played a lot of WarThunder over the weekend, and I have to thank my friend Craig for signing up to WarThunder and reaching Rank 2 so very quickly... Was great fun introducing a new player to the game.

I was only a little jealous of how good his first few battles went, and it was very interesting watching how his account was reduced to just one Nation and then slowly opened up...

But the tutorials are still terrible.  Improved since I started, but still terrible, and whoever their narrator is... Christ what an annoying voice, and his pronunciation is shite!

I spent much of the weekend however playing with Craig, and his low level Brits, so we spent a lot of time with me acing out planes - since I started playing before there were half as many modifications as there are now.  My British Ace aircraft swelled from two to thirteen by the time we were done, and when Craig unlocked his Hurricane IIB I received a nice 50,000 Lion bonus :)

He's determined to get to Rank 3 now on his own and earn me my 100 gold, as he says he likes the game so much...

I however spotted this problem:


Take a British bi-plane, so we're talking Nimrod I or II, Fury I or II or the Swordfish above their max speed in Arcade, so you get the "Reduce Speed" message and the flutter sound from the rigging... Jump out or die and get into a Gladiator, and you start off with the aircraft well below the max speed of the Gladiator, but you still have the warning and sounds playing!

It also felt like my Gladiator was responding to motion like my Swordfish, but that's hard to tell for sure with the Arcade flight model.

I reported this, but Gaijin don't seem impressed...

I had another bug report accepted...

And another rejected... 

For the rejected one I have two Videos, and they are different situations, but I don't see the point of allowing for trimming in the test flight models... Surely it will result in NOT comparing like for like... I felt very much as it I'd been given the brush off, despite making the post, making it informative, I obviously see this as a bug, eve the original responder must because he didn't know the policy was to have trimming in the test flight models, so not a 100% match up there and very much not testing what is happening in the game for real.

The code may behave differently with or without trimming...

And certainly for pilot training - which was why I noted the problem - it made for a false impression, in the FW190, I used the Aileron trimming on take off to stabalise the torque... I used it and was very thrown after traning for 4+ hours to go into a full real battle and suddenly not have it available!

So, available in test....

Not in simulator battle...

I dunno, I just get the impression that as excellent as the code and ideas from Gaijin are, their development style and especially testing is very much "We Do As We Want, You Follow"... I dunno, maybe it's a Russian thing?

Thursday, 7 August 2014

Heroes and Generals - Bugs & Problems

I played a game of Heroes and Generals last night, it was the only bit of relaxation time I got, and I'm sad to report it was not very relaxing... The game is of course only in BETA, so subject to change, and I hope to god changes happen, because there are some very very annoying problems with the game.

The biggest problem I found was the strange lack of a tactical direction, what do I mean by this?... Well in the game you have your missions, they have set objectives, they show you them, but then they don't actively reward you for them, so sitting on an objective, defending gets you no points.  To earn points you have to let the enemy take it, or neutralize it, and then recapture it... This is of course playing with fire.

Once you let the enemy in, you're asking for trouble, and sure enough once the clever souls around me figured they ONLY got credits/rewards for letting the enemy in we were screwed, we lost defensive location after defensive location, but the canny sods climbed up and up in the scores... Over all we lost, but they got massive scores, and I can't help but think this was backwards, and a better metric should be rewarded for defending, e.g. being within X distance of Y flag whilst that flag remains friendly and Z enemies have been within a certain distance... So the flag is being pressured, but you're stopping the enemy... Not letting them physically neutralise it.

The next frustration was the snipers and tanks... Players were sitting far away, untouchable, nailing whole buildings with fire... So what?... Well, we had to spawn in those buildings... So you spawned and were blown up, you spawned and were head shot, you spawned and were shot... Then you finally get a spawn away from the rest of the action, and you get shot running back over and into cover... Because the mission did not encourage or provide a counter to the enemy... If you can't see 'em, you can't shoot 'em...

And then, even if you did shoot them, and hit them, in the early tiers you really don't do any damage to the enemy... I was hitting people with my G43 and so frustrated that I could shoot 3 4 or even more times and they'd just run off... Then someone else gets one hit and they get the kill... I must have seen this fifty times (I'm not joking), and it annoys me greatly.  WarThunder handle this better with their assist system.

Then of course there was the anti-tank and grenade mechanics... Grenades, what a useless thing they are, I've seen them fall at an enemies feet, and blow up, and the enemy survives... Anti-tank weapons, I hate you can't fire them from the hip... But then I've had it so you can't fire at all... So bugs bugs bugs... Plus the bullet drop rate it terrible on the projectiles, they fly like British spring fired anti-tank rounds, not the rocket propelled rounds they are!

Next, collisions... I was on a bike, going across and open area, an enemy plane dived down and rammed me with its wing, this killed me... the message... "Xelous (Killed) Xelous"... NO I DID NOT!... I didn't kill myself, I was rammed, by a plane!

Finally, the weapon upgrade pathways, are about as clear as mud, there's no clear benefit to any one set of upgrades, they are so very very costly, yet when you mention this the elitist of gold spammers call you a fool or a noob because your weapon is weak... I find this very annoying.

Still, am I enjoying the game?... Yes, am I going to be interested in how it develops, yes... Am I going to continue to explore the title, yes...

But above all this, I hope the weapons get balanced, and this tactical problem of a "direction" and more reward for actually carrying out the mission is given.

Worst case for me last night was in a defensive mission, I was only rewarded +53 for capturing an outpost... I was meant to be defending an objective, not running away from those three objectives to re-capture something else... Very counter intuitive.

Saturday, 21 June 2014

Typhoon Fighters, Old and New

I was doing some research about the Hawker Typhoon Fighter Bomber in World War 2 last night, this was to help feedback against a moderated bug report on the Gaijin forums for War Thunder.

As part of my research I spent a good two hours after that dismal England match against Uruguay reading and checking figures in several books, it took so long because one of the references I wanted to pull out of my archive was from the Imperial War Museum's "Images of War" publication, and I could not find the right edition (there being 52 of them).

Anyway, I did find it in the end, and after checking with Janes, I hit the internet to re-evaluate the original digital source links I'd passed over in the post.

They all married up, roughly, and my observations of the climb performance in game were much higher, so there's clearly something wrong with the flight model.  I don't know if its a bug in how the sustained climb acts, or just a bug in the drop off of engine performance at height... But whatever it is, its not firmly in the hands of their moderators.

I like that they're handling bugs like this in a moderated fashion, it stops the dross of trolling and random posting which was the bane of my life when at the Lordz, trying to figure out what was an actual bug report and what was just people having a go.

I was however interested to see this article from the Telegraph come up, when I was searching online about the climb rate of the Typhoon.


In case you're not aware the Eurofighter as it entered RAF service was christened the Typhoon, unlike its name sake this new generation jet fighter can climb, oh boy can it, I've seen them in the flesh, a diamond formation of four going vertical over the Lincolnshire countryside.