Jump to content

Dear BioWare, your coding is terribad.


Eszi

Recommended Posts

No, this isn't another "omg bad fps fix pl0x" thread, although bad performance/stuttering is what got my attention.

Before you say "omg it's ur pc, im maxing this game on a calculator and never drop below 100000 trillion fps", try going to an area with 40+ people on screen and hit ctr+shift+f.

 

Running a gtx 580 myself, on the fleet the average fps is about 20, no matter what settings or resolution i use, it doesn't affect the fps at ALL.

Funny thing is, according to the in-game fps meter, it's my gpu that should be to blame, yet when i check the gpu usage, it averages at 30%.

30%, assuming I'm running the game at max. If i lower the settings, for example set everything to very low, fps is the same, it still shows that my gpu is limiting the fps, yet the usage on the gpu drops even lower (0%-5%).

 

Seeing as CS is "awesome" as always, and provided me with a bunch of "helpful" instructions, such as disabling nameplates, which obviously didn't change anything, I decided to investigate.

 

So first thing, checking shaders file.

IT'S A MESS.

First noticable thing - size - 32MB. It's HUGE. Shader file is what gets uploaded directly into your gpu, not video ram, but the gpu itself. There's no way a 32MB file would fit, and it doesn't.

Alright, opening the file, since it's just a .bin and anything will work, really.

Right, now it's obvious why the file is so large:

There's a TON of empty space between a lot of lines of code, removing just that would reduce the file's size significently. Other than the empty space being all over the place, there's also this:

Microsoft (R) HLSL Shader Compiler 9.23.949.2378

Fine, I get it. You used a version of the compiler that's outdated by like 3 years. Cool:rak_03:

How about you don't mention it all over the file, you know, to save space, especially that this info sometimes repeats itself every 2 lines :confused:

 

Another thing worth mentioning is that the file appears to be partially uncompiled

Advantages: when you change something in it, you don't have to compile it again

Disadvantages: Performance loss, since you're compiling on the fly

Seeing as we can't really change the file, guess what would be the right choice

 

Before you ask why won't I just make the changes myself - offsets are hardcoded :)

 

Gonna try to disassemble this, source code for this...thing, it should be fun

 

Next BioWare coding tutorial will include:

Running the render as a seperate proces - why is it a bad idea due to massive overhead it creates and the fact that communication between processes is horrible.

Link to comment
Share on other sites

  • Replies 81
  • Created
  • Last Reply

Top Posters In This Topic

I knew something was fishy with the coding.

 

Just wait for 1.8, "Slaughter of the Killiks" where there's no knew content but a whole pile of bug fixes and code optimization.

 

*slaps himself* Sorry, was delusional there for a minute.

Link to comment
Share on other sites

Ever thought that the "blank space" could also be stuff that doesn't translate well into ascii? Unless you actually can see the "real" code, you are just talking out your butt.

 

And no, it doesn't matter that you write code for a living either, just in case you feel like telling us that.

Link to comment
Share on other sites

We definitely need more inquisitive people like the OP ... just so we can shut the defenders up who claim to be having 110 fps on the fleet and in 16m Ops on High, if not anything else.

 

The coding is so bad they even admit they can't implement chat bubbles because of it ... yeah, I'm sure we'll get some smooth 100 v 100 battles on Ilum anytime soon :cool:

 

But, of course, the thread is pointless. Sane people who immediately recognised that the performance in this game is nothing short of an insult to any hardware known to mankind have left long ago, and most that have stayed are simply defending the game left and right by either having beast machines that can perform wonders while staying still on the fleet (and, of course, not actually putting that rig to the test by engaging in large-scale group activities) or making outlandish claims that Ops and Warzones run consistently smooth as butter even after long gameplay sessions (without, of course, providing any actual videos of that; while, on the other hand, you can see plenty of videos on YouTube that show the terrible performance ranging from 20 to 30 fps, searching for Ilum 1.1 slideshows is truly entertaining).

Link to comment
Share on other sites

No, this isn't another "omg bad fps fix pl0x" thread, although bad performance/stuttering is what got my attention.

Before you say "omg it's ur pc, im maxing this game on a calculator and never drop below 100000 trillion fps", try going to an area with 40+ people on screen and hit ctr+shift+f.

 

Running a gtx 580 myself, on the fleet the average fps is about 20, no matter what settings or resolution i use, it doesn't affect the fps at ALL.

Funny thing is, according to the in-game fps meter, it's my gpu that should be to blame, yet when i check the gpu usage, it averages at 30%.

30%, assuming I'm running the game at max. If i lower the settings, for example set everything to very low, fps is the same, it still shows that my gpu is limiting the fps, yet the usage on the gpu drops even lower (0%-5%).

 

Seeing as CS is "awesome" as always, and provided me with a bunch of "helpful" instructions, such as disabling nameplates, which obviously didn't change anything, I decided to investigate.

 

So first thing, checking shaders file.

IT'S A MESS.

First noticable thing - size - 32MB. It's HUGE. Shader file is what gets uploaded directly into your gpu, not video ram, but the gpu itself. There's no way a 32MB file would fit, and it doesn't.

Alright, opening the file, since it's just a .bin and anything will work, really.

Right, now it's obvious why the file is so large:

There's a TON of empty space between a lot of lines of code, removing just that would reduce the file's size significently. Other than the empty space being all over the place, there's also this:

Microsoft (R) HLSL Shader Compiler 9.23.949.2378

Fine, I get it. You used a version of the compiler that's outdated by like 3 years. Cool:rak_03:

How about you don't mention it all over the file, you know, to save space, especially that this info sometimes repeats itself every 2 lines :confused:

 

Another thing worth mentioning is that the file appears to be partially uncompiled

Advantages: when you change something in it, you don't have to compile it again

Disadvantages: Performance loss, since you're compiling on the fly

Seeing as we can't really change the file, guess what would be the right choice

 

Before you ask why won't I just make the changes myself - offsets are hardcoded :)

 

Gonna try to disassemble this, source code for this...thing, it should be fun

 

Next BioWare coding tutorial will include:

Running the render as a seperate proces - why is it a bad idea due to massive overhead it creates and the fact that communication between processes is horrible.

 

I would love to know your credentials with coding. White space is never translated into code and is always ignored. I get that there are a ton of problems but before you start pointing things out and trying to sound like you know anything I would suggest picking up a book.

Link to comment
Share on other sites

We definitely need more inquisitive people like the OP ... just so we can shut the defenders up who claim to be having 110 fps on the fleet and in 16m Ops on High, if not anything else.

 

The coding is so bad they even admit they can't implement chat bubbles because of it ... yeah, I'm sure we'll get some smooth 100 v 100 battles on Ilum anytime soon :cool:

 

But, of course, the thread is pointless. Sane people who immediately recognised that the performance in this game is nothing short of an insult to any hardware known to mankind have left long ago, and most that have stayed are simply defending the game left and right by either having beast machines that can perform wonders while staying still on the fleet (and, of course, not actually putting that rig to the test by engaging in large-scale group activities) or making outlandish claims that Ops and Warzones run consistently smooth as butter even after long gameplay sessions (without, of course, providing any actual videos of that; while, on the other hand, you can see plenty of videos on YouTube that show the terrible performance ranging from 20 to 30 fps, searching for Ilum 1.1 slideshows is truly entertaining).

 

A video wouldn't tell you how long their game session had been, so what would be the point?

 

My PC is far from high-end but I have only relogged and rebooted my PC once because my game was getting choppy after a marathon session. I didn't learn that clearing cache every once in a while made for a smoother game from playing SW:TOR, I learned that from the very first MMO I ever played and have made a practice of clearing cache in just about every MMO I played thereafter.

 

Am I saying that game code couldn't be better? Of course not, as quite apart from anything else I have no knowledge of software language outside of BASIC. But I do think that, like everything else concerned with gaming design, the amateurs seem to think it is simpler than it is and have too high expectations as a result.

 

Who is the happier gamer? Someone like me who accepts that occasionally after a 12 hour session (:o) they may have to clear their cache, which means quitting game and rebooting. Or a player who thinks they should never, ever under any circumstances take a proactive role in ensuring their game runs smoothly?

Link to comment
Share on other sites

I love how all the apologists come out and naysay a thread that simply points out the truth that the code for this game suffers from horrible optimization.

 

Sorry folks. Its true.

 

Make apologies for your own failings, not the failings of others.

 

I think actually the majority our responses were simply that if you want to make judgement on the code then perhaps you should know something about coding.

Link to comment
Share on other sites

No, this isn't another "omg bad fps fix pl0x" thread, although bad performance/stuttering is what got my attention.

Before you say "omg it's ur pc, im maxing this game on a calculator and never drop below 100000 trillion fps", try going to an area with 40+ people on screen and hit ctr+shift+f.

 

Running a gtx 580 myself, on the fleet the average fps is about 20, no matter what settings or resolution i use, it doesn't affect the fps at ALL.

Funny thing is, according to the in-game fps meter, it's my gpu that should be to blame, yet when i check the gpu usage, it averages at 30%.

30%, assuming I'm running the game at max. If i lower the settings, for example set everything to very low, fps is the same, it still shows that my gpu is limiting the fps, yet the usage on the gpu drops even lower (0%-5%).

 

Seeing as CS is "awesome" as always, and provided me with a bunch of "helpful" instructions, such as disabling nameplates, which obviously didn't change anything, I decided to investigate.

 

So first thing, checking shaders file.

IT'S A MESS.

First noticable thing - size - 32MB. It's HUGE. Shader file is what gets uploaded directly into your gpu, not video ram, but the gpu itself. There's no way a 32MB file would fit, and it doesn't.

Alright, opening the file, since it's just a .bin and anything will work, really.

Right, now it's obvious why the file is so large:

There's a TON of empty space between a lot of lines of code, removing just that would reduce the file's size significently. Other than the empty space being all over the place, there's also this:

Microsoft (R) HLSL Shader Compiler 9.23.949.2378

Fine, I get it. You used a version of the compiler that's outdated by like 3 years. Cool:rak_03:

How about you don't mention it all over the file, you know, to save space, especially that this info sometimes repeats itself every 2 lines :confused:

 

Another thing worth mentioning is that the file appears to be partially uncompiled

Advantages: when you change something in it, you don't have to compile it again

Disadvantages: Performance loss, since you're compiling on the fly

Seeing as we can't really change the file, guess what would be the right choice

 

Before you ask why won't I just make the changes myself - offsets are hardcoded :)

 

Gonna try to disassemble this, source code for this...thing, it should be fun

 

Next BioWare coding tutorial will include:

Running the render as a seperate proces - why is it a bad idea due to massive overhead it creates and the fact that communication between processes is horrible.

 

And your "Shader File" you are trying to tear apart is in no way source code for the game engine.

Link to comment
Share on other sites

Decompiled source code is not the same as the original source code. While the OP may know a thing or two you have to take everything you read in context. As was said above, shaders are only one item that rely on your video card specifically. The client code is probably a bigger piece of the puzzle.

 

This was an alpha engine they completed themselves. There will be problems. I have learned to deal with it. If you can't, no harm in moving on.

Edited by Arkerus
Link to comment
Share on other sites

Why is TOR running two processes I wonder ?

 

To enable CPU's to multi thread?

 

When BW used the Alpha version of the Hero Engine it was only coded for single threaded, so BW had to make the the game multi threaded hence the 2 processes?

 

Not sure if im right mind?

Edited by kmufc
Link to comment
Share on other sites

Well I'm a software engineer but I don't develop video games. So I'm not 100% sure if the OP knows what he is talking about. But the technical stuff does sound plausible . He might have taken a condescending tone but that doesn't make him wrong. He might have actually been helpful... Those of us who aren't familiar with this specific tech really shouldn't jump to conclusions either way until the OP can explain how he might have this insite or a dev confirms the accuracy.
Link to comment
Share on other sites

To enable CPU's to multi thread?

 

When BW used the Alpha version of the Hero Engine it was only coded for single threaded, so BW had to make the the game multi threaded hence the 2 processes?

 

Not sure if im right mind?

 

Most probably not. Multithreading can be done within a single process. However, an app is limited in memory usage on a 32 bit client. Using 2 processes doubles the amount of mem it may use. I think that's why they did it this way.

Link to comment
Share on other sites

Most probably not. Multithreading can be done within a single process. However, an app is limited in memory usage on a 32 bit client. Using 2 processes doubles the amount of mem it may use. I think that's why they did it this way.

 

 

And just to ad to this Muti threading doesn't make things go faster it's enables parallel processing. If you design it wrong you can actually make things go slower

Link to comment
Share on other sites

To enable CPU's to multi thread?

 

When BW used the Alpha version of the Hero Engine it was only coded for single threaded, so BW had to make the the game multi threaded hence the 2 processes?

 

Not sure if im right mind?

 

Why question marks? I asked the question honestly. I haven't seen any other game which would launch with two processes. Also everytime when you turn off TOR on 32 bit vista it's never closing down properly, it's always program stopped working.

Link to comment
Share on other sites

Most probably not. Multithreading can be done within a single process. However, an app is limited in memory usage on a 32 bit client. Using 2 processes doubles the amount of mem it may use. I think that's why they did it this way.

 

Yeah, there might be reasons. I think we're getting into some serious armchair-developer territory in this thread and nobody but the devs have all the info. I have trouble believing it is as simple as a badly optimized shader file either. The file format might be sparsely populated, but that doesn't necessarily mean it looks that way once loaded into the GPU. I don't really know, myself, but it's a possibility that it doesn't really matter how it looks on disk.

Link to comment
Share on other sites

I would love to know your credentials with coding. White space is never translated into code and is always ignored. I get that there are a ton of problems but before you start pointing things out and trying to sound like you know anything I would suggest picking up a book.

 

I've got minimal experience with coding (moderate fluency in C++ and JAVA, rudimentary HTML) and even I know this.

Link to comment
Share on other sites

Why question marks? I asked the question honestly. I haven't seen any other game which would launch with two processes. Also everytime when you turn off TOR on 32 bit vista it's never closing down properly, it's always program stopped working.

 

The ? marks were aimed at myself with what ive said.

 

I was not having a go at you at all, chill :)

Link to comment
Share on other sites

Actually the OP is right. The white space may not be translated into code, but it does increase the size of the file being loaded into the GPU.

 

As for alec's comment about the "not responding on vista" its the same on 32 bit 7 and 8.

 

If the white space does not get translated into the compiled code (meaning the white space isn't in the compiled code), then how does it make the file bigger? I mean, it isn't IN the compiled code...

Link to comment
Share on other sites

i'm not a programmer, but as an art director I've worked with a lot of programmers. My experience is that there are a lot of different ways to approach coding problems, and what one programmer might see as a hard limitation can be a unique challenge to another. Also, there is almost always room for improvement.

 

What makes MMOs unique, and so much different from your average title is that game design becomes somewhat of a collaboration between the community and the developers. That typically doesn't go as far as letting the community dictate how to code the game, but it does more often than not involve getting community input on design decisions.

 

It's a unique relationship, and smart devs take advantage of the vast resource that is the community. They use it to make their own work better. The community benefits because it improves the product they devote so much time and effort to.

 

I know there are some creative and brilliant programmers that play this game, and I personally think its good to see the OP show this kind of interest. BioWare is only so big--they can only do so many things at once--but this community is nearly limitless in what its capable of, and we should be open to everyone's contributions.

Edited by Drebs
Link to comment
Share on other sites


×
×
  • Create New...