Please upgrade your browser for the best possible experience.

Chrome Firefox Internet Explorer
×

Your technology needs help... lots of help... lots and LOTS of help. :(

STAR WARS: The Old Republic > English > General Discussion > Suggestion Box
Your technology needs help... lots of help... lots and LOTS of help. :(

GlowstickSwinger's Avatar


GlowstickSwinger
04.28.2012 , 02:23 AM | #281
Quote: Originally Posted by JeramieCrowe View Post
I quite disagree. Perhaps for some of the average users. In my experience, some "not too electronically savvy" users tend to have quite a messy process tree going on when the OS starts. It seems that the average gamer, however, is more careful about this.

If one keeps one's processes clear of any unnecessary processes, which should be normal for any gamer, then the scenario in your post will rarely, if ever, actually fire. But if you insist to clutter your processor space, then yeah, any amount of CPU is going to halt because of YOUR choice.

Thus, the I/O pause is actually saving you from a clean lock-up. Again, it's necessary for a game that transmits, utilizes, and displays much more data and objects than any other MMO previous.

Again, I'm scrupulous about what my processor crunches, and my machine rarely, if ever, utilizes such blocks. My wife, though, calls me obsessed about it. We had to get her her own PC because of it. I'm more fastidious than even the advanced user.

You really have to put yourself into the position of a developer of a data-heavy game. You know the typical end user has a messy process list going on simply starting the computer. Then, you have users who run things in the background along with your data-heavy game. If you don't want constant complaints of lock-ups, you're going to put a dynamic block in place, simple as that.

If you, as the end user, don't want any blocks happening, clean your crap up!
The OS handles processes. Processes handle threads. I don't think SW:TOR runs the risk of accidentally calling a thread that Chrome may or many not be using? o___O

Now, those threads might be pulling and writing data to and from the same shared resource... like a hard drive, in which scheduling and priority takes over.

So let's take your scenario.

What happens when you have two browser, an mp3 player, and SW:TOR running? A whole lot of reads from the hard drive is what's going on.

So SW:TOR goes to access some .DAT files. As it turns out, some other dude is all up on your hard drives, stinking up the joint. So now SW:TOR has to wait until Mr. Hard Drive Hog is finished. Yes, this call for the .DAT file is asynchronous, but the parent HeroScript is not. So until that those disk i/o requests gets resolved, all subsequent HeroScript requests are going to come to a dead halt until that resource request is resolved.

That's why the game hiccups when you dismount or encounter someone new. It's pulling new models from the hard drive all the time and it is blocking all future HeroScripts in the process. (HeroScripts contain most of the game logic)

The problem is very far removed from something as fundamental as fork() or epoll(). The engine itself simply won't execute multiple HeroScripts in parallel.

And that's not a misinterpretation. That is the expected and intended use case of the engine:

http://wiki.heroengine.com/wiki/Asyn...ons#Background

"The HeroMachine (virtual machine in charge of running HeroScript) processes HeroScript synchronously where one instruction must complete its operation before the next one may be started. "

ironix's Avatar


ironix
04.28.2012 , 02:29 AM | #282
Quote: Originally Posted by JeramieCrowe View Post
And I think OP is misinterpreting his data to mean that it's just processor-heavy with nowhere to go.
Actually, he's not saying that. What he's saying is that the software is very poorly optimized and if it were optimized correctly, this game would run much, much faster.

EDIT: http://www.heroengine.com/2011/11/he...eets-starwars/ only serves to confirm that the code is poorly optimized.

EDIT #2: Forgot a word. >.>
Godwin's Law for SW:TOR -- As a discussion in the SW:TOR forums grows longer, the probability of a comparison involving WoW or being told to "go back to WoW" approaches 1.

JeramieCrowe's Avatar


JeramieCrowe
04.28.2012 , 02:30 AM | #283
Quote: Originally Posted by GlowstickSwinger View Post
The OS handles processes. Processes handle threads. I don't think SW:TOR runs the risk of accidentally calling a thread that Chrome may or many not be using? o___O
That was left-field. What? You don't think there's any processes from TOR that doesn't go through your processor? There are? Then this statement makes zero sense. Of course TOR only calls its own threads... *smh*

Quote: Originally Posted by GlowstickSwinger View Post
Now, those threads might be pulling and writing data to and from the same shared resource... like a hard drive, in which scheduling and priority takes over.

So let's take your scenario.

What happens when you have two browser, an mp3 player, and SW:TOR running? A whole lot of reads from the hard drive is what's going on.

So SW:TOR goes to access some .DAT files. As it turns out, some other dudes are in line to get them as well. So now SW:TOR has to wait. Oh, and by the way, this call for the .DAT file? It's asynchronous, but the parent HeroScript is not. So until that HeroScript gets resolved, all subsequent HeroScript requests are going to come to a dead halt until that resource request is resolved.

That's why the game hiccups when you dismount or encounter someone new. It's pulling new models from the hard drive all the time and it is blocking all future HeroScripts in the process. (HeroScripts contain most of the game logic)

The problem is very far removed from something as fundamental as fork() or epoll(). The engine itself simply won't execute multiple HeroScripts in parallel.
You're clouding the issue with unnecessary drivel. The fact is, when you have TOR, Chrome (which I use), and Vent going, along with a clear start-up process queue, no blocks happen. Period.

Quote: Originally Posted by GlowstickSwinger View Post
And that's not a misinterpretation. That is the expected and intended use case of the engine:

http://wiki.heroengine.com/wiki/Asyn...ons#Background

"The HeroMachine (virtual machine in charge of running HeroScript) processes HeroScript synchronously where one instruction must complete its operation before the next one may be started. "
The implementation of that factor is situational. A failsafe. Don't present the situation (which is all too easy to prevent), and it won't present itself.
Allix Crowe - Vanguard Trooper -/- Ethavan Crowe - Smuggler Gunslinger -/- Malrath Crowe - Powertech Bounty Hunter -/- Boslo - Jedi Knight Sentinel -/- Jiao-gen Pall - Jedi Knight Guardian -/- Landen Tanarr - Jedi Consular Sage -/- Vaelyth Kinti-kaar- Sith Warrior Juggernaut -/- Oteln'erose'thu - Imperial Agent Sniper -/- Zandur Tuum - Cathar Knight

GlowstickSwinger's Avatar


GlowstickSwinger
04.28.2012 , 02:31 AM | #284
Quote: Originally Posted by ironix View Post
Actually, he's not saying that. What he's saying is that the software is very poorly optimized and if it were optimized correctly, this game would much, much faster.
Understandably, I see why the HeroScript is blocking. It's a scripting language that is made procedural for ease of organizing and understanding game logic. But it's also the reason why things are slowed to all hell.

IMO... game logic should be purely event-driven, not procedural.

JeramieCrowe's Avatar


JeramieCrowe
04.28.2012 , 02:33 AM | #285
Quote: Originally Posted by GlowstickSwinger View Post
Understandably, I see why the HeroScript is blocking. It's a scripting language that is made procedural for ease of organizing and understanding game logic. But it's also the reason why things are slowed to all hell.

IMO... game logic should be purely event-driven, not procedural.
The problem I have with your description is that it should be global if that's actually the case.

It's not global. I'm proof of that. So, there must be other factors. If you've done any real-world troubleshooting, you'll know that the obvious answer...is the wrong answer. (In cases like this, hehe. With end users, yes, it's usually that the cord came unplugged. )
Allix Crowe - Vanguard Trooper -/- Ethavan Crowe - Smuggler Gunslinger -/- Malrath Crowe - Powertech Bounty Hunter -/- Boslo - Jedi Knight Sentinel -/- Jiao-gen Pall - Jedi Knight Guardian -/- Landen Tanarr - Jedi Consular Sage -/- Vaelyth Kinti-kaar- Sith Warrior Juggernaut -/- Oteln'erose'thu - Imperial Agent Sniper -/- Zandur Tuum - Cathar Knight

GlowstickSwinger's Avatar


GlowstickSwinger
04.28.2012 , 02:37 AM | #286
Quote: Originally Posted by JeramieCrowe View Post
That was left-field. What? You don't think there's any processes from TOR that doesn't go through your processor? There are? Then this statement makes zero sense. Of course TOR only calls its own threads... *smh*
Just feeling you out.

Quote: Originally Posted by JeramieCrowe View Post
You're clouding the issue with unnecessary drivel. The fact is, when you have TOR, Chrome (which I use), and Vent going, along with a clear start-up process queue, no blocks happen. Period.
Why are you obsessing over process queuing? I'm speaking, exclusively, about disk i/o and network i/o, the two slowest resources on the average computer. The processor suffers from potential starvation when adding disk and network wait times, which I never said was the issue.

I'm not sure where you thought I did say that.

Quote: Originally Posted by JeramieCrowe View Post
The implementation of that factor is situational. A failsafe. Don't present the situation (which is all too easy to do), and it won't present itself.
It's not situational. The -entire- game loop -stops- when reading from disk.

Reading from disk is not an FTL operation yet. It takes time to find and assemble that data. And the entire game loop comes to a -dead halt- when that data is being read from a call in HeroScript.

It has nothing to do with process queues or CPUs or threads or anything. It is strictly how the application was structured to "simplify" maintaining game logic.

ironix's Avatar


ironix
04.28.2012 , 02:40 AM | #287
Quote: Originally Posted by JeramieCrowe View Post
The problem I have with your description is that it should be global if that's actually the case.

It's not global. I'm proof of that. So, there must be other factors. If you've done any real-world troubleshooting, you'll know that the obvious answer...is the wrong answer. (In cases like this, hehe. With end users, yes, it's usually that the cord came unplugged. )
Wait a sec here... You're an iOS developer using Objective-C and Cocoa and you're NOT writing event-driven applications?
Godwin's Law for SW:TOR -- As a discussion in the SW:TOR forums grows longer, the probability of a comparison involving WoW or being told to "go back to WoW" approaches 1.

GlowstickSwinger's Avatar


GlowstickSwinger
04.28.2012 , 02:43 AM | #288
Quote: Originally Posted by JeramieCrowe View Post
The problem I have with your description is that it should be global if that's actually the case.

It's not global. I'm proof of that. So, there must be other factors. If you've done any real-world troubleshooting, you'll know that the obvious answer...is the wrong answer. (In cases like this, hehe. With end users, yes, it's usually that the cord came unplugged. )
User system configurations can be all over the place. Different gear, operating systems, configurations... not every machine is going to be the same. This real world fact lends itself to my explanation because I can explain why even people with beefy graphics cards still experience loading time hell. The hard drive activity is to blame.

And if you have a boss SSD? The network activity is to blame.

And if you have fiber optics? The overall network i/o strategy is to blame.

What do the disk, the network, and the network i/o strat have in common?

Blocking HeroScripts and synchronous GOMs. The engine itself is imposing needless wait times that compound because their game logic isn't event-driven.

VoXPCS's Avatar


VoXPCS
04.28.2012 , 02:44 AM | #289
Quote: Originally Posted by GlowstickSwinger View Post
TL;CR Breakdown:

Problems
  • Technical needs are lowest priority, which causes the following:
  • Network I/O is abusive Send/read bloat.
  • Network I/O may have blocking operations. Send/Read bloat.
  • Client has blocking operations. Read bloat.
  • Client loading screen isn't always away from the play state. Read bloat.
  • Client physics engine is authoritative regarding movement. Send bloat.

Solutions
  • Don't let marketing run the show... they never have any idea what they are doing. It's Star Wars. It markets itself for God's sake.
  • Set aside time to fix technical debt.
  • Prioritize performance issues over all else until things stabilize, primarily, the network I/O and the asset loading strategy.
  • Reduce your poly count on the client.
  • Back off any 3D engine features for a bit. You're not going to outshine where Xbox was three years ago and it's an MMO. You can get away with some crappy graphics.
  • Devs, leads, PMs, and the CTO needs more spinal fortitude to push back against other department priorities instead of being driven to cutting corners and create more technical debt.

THIS IS WHERE TL;CR ENDS. YOU CAN NOW GO BACK TO YOUR 140 CHARACTER POEMS.

To see the packet analysis of the network I/O, click on Show!

Spoiler


To read the drill-down into the HeroEngine network optimization itself, click on Show!

Spoiler


To read the original scathing rant that kick started this whole shebang, click on the SHOW button! Free bunnies!

Spoiler

The horse is on the ground dude, why do you and others with more talent and skill keep kicking it. Help a game with a pulse, one that wants to live.

EA has made what they're going to make. They're praying for 6 more months of sustainability before it STARTS costing them money to operate this piece.

You're obviously extremely skilled in the area programming. Don't waste your breathe on the Hero Engine. Unreal and Crysis engines will always reign superior and there isn't a single BW employee with your depth of knowledge otherwise, this thing wouldn't have released as bad as it did, as STILL is after the -

"Largest patch in MMO history"

3 other major games make fun BW's statement openly in chat, it's comical. If wal-mart were an engineering company, the Hero Engine would be it's flagship. Period.
Welcome to The Fatman: Where LFG actually works. & MMO means something again.

GlowstickSwinger's Avatar


GlowstickSwinger
04.28.2012 , 02:45 AM | #290
Quote: Originally Posted by VoXPCS View Post
The horse is on the ground dude, why do you and others with more talent and skill keep kicking it. Help a game with a pulse, one that wants to live.
I read everything else, but I think this settles it.

You're right.

I'm going to bed lol