The bad PR move imo is that the company stated that the game requires "online access to servers for cloud calculations", but users have found a single line of code that when removed allows the game to work in offline play because it disabled the connection check every 20 minutes.
As far as I can tell, this idea is popular but it is flat-out wrong. I seriously don't understand how this criticism makes any sense.
The first Kotaku article you link quotes Maxis general manager Bradshaw: "GlassBox works by attributing portions of the computing to EA servers (the cloud) and some on the player's local computer." She was speaking in the context of online play and region play. There is a bit of ambiguity here, but suffice to say given the context and a modicum of common sense that the servers run the region-level simulation. Nobody has ever presented a single shred of evidence to refute that claim. The servers run the region-level simulation.
That is why the region level simulation is not playable in offline play. Because the game isn't playable offline. Because the servers run calculations.
I was upset that I couldn't play Sim City when it came out, and I am still upset with continuing region sync issues. The pathfinding code for agents (vehicles and utilities) is abysmal. There are lots of valid reasons to dislike this game. But misrepresenting online-only play isn't among the things EA did wrong.
EA built Sim City around region play and they told the truth about that. They say it doesn't work if you're not connected to the region, and when some folks show that, indeed, the region sim doesn't work when you disconnect from the internet, it's total bullshit to construe this as evidence that EA lied about whether it works offline. It doesn't.
Are people simply upset that EA won't make some kind of boneheaded mea culpa? "We built the game around online-only region play as cynical ploy to prevent piracy." Yeah right.
> That is why the region level simulation is not playable in offline play. Because the game isn't playable offline. Because the servers run calculations.
I guarantee you that within a couple weeks, someone will have reverse-engineered the server responses to fake that bit client side. The data it sends and the responses are pretty much just integers.
If modders can do it, there's no reason why the authors couldn't.
It has been established that the only "calculation" the server does inform other cities of your available resources in your unopened, frozen city. Additionally, it handles game saves. All city simulation is handled client side.
So to run an offline region you'd need to engineer a local save, and then figure out a way to determine the available resources in these locally saved cities. Something pretty advanced, like a 1kb CSV might be able to handle it.
Thanks for explaining this. So the real issue isn't that EA officials have lied about online-only, it is that EA misleads their customers on the level of difficulty. Saying the game is engineered from the ground up for online play suggests some complexity at the server level which simply doesn't exist.
People with well-examined opinions aren't upset that EA servers don't run the city-level simulation. They are upset at how simple it would be to give users region simulation on their local PC, a server app so users can run their own, or a play-by-email implementation.
I find it ironic that the DRM is pushing me to wait until the game is cracked and client-side regions are possible. I was actually happy to buy SimCity, but I want have my saves and run regions offline. Pretty hilarious.
So what? It's obvious that someone can reimplement the server logic. This is how we've worked around multiplayer DRM forever. Maxis didn't say "we are incapable of writing this code to run on a local client", they just said "we wrote this code to run on our cloud infrastructure, because it's a buzzword that might get someone stupid to care about us, and because it has a convenient side effect of making piracy more difficult". Of course they could have written the code to run client-side, or to run on independent servers, or whatever.
So according to the articles posted in the parent post, removing line 22 here [1] will enable offline play.
I'm not literate at all about the state in which production code gets shipped to the end user, but I would have expected this level of code to have been in binary form. Could someone shed some light on this?
JavaScript doesn't get compiled into binary. The human readable source code file just gets processed directly by an engine that executes each command. You're right though, the fact that this is in a form that's so easy to read is extremely surprising.
Normally what's done with script languages like JavaScript is to obfuscate the file by processing it with a tool that would rename everything to be meaningless, and change spacing, line breaks, etc in a way that is still executable, but overwhelmingly tedious/difficult for any human to read and understand.
Did they really ship the game with such open sourced code? For a company so concerned about preventing piracy, I find that pretty hard to believe. It's like they didn't even try.
Well, it can. V8 and other Javascript engines do Just-In-Time (JIT) binary compilation, meaning that they start by interpreting and executing each line of code as they read it, but when they see a function getting executed a lot, they convert just that function to native machine code as a performance optimization for the next time it gets called.
And, because this does happen, you can ship compiled Javascript--by dumping the memory-image of the Javascript interpreter after running it for a while (JITed routines and all) and then reloading it on the client end.
> meaning that they start by interpreting and executing each line of code as they read it, but when they see a function getting executed a lot, they convert just that function to native machine code as a performance optimization for the next time it gets called.
Technically V8 does not have an interpreter pass at all. It always JITs to machine code. It does have two compilers though: a fast JIT and a slow JIT. The fast one gets code running as quickly as possible so your app starts fast, but doesn't generate optimal code. The slow JIT kicks in for hot code and spends more timing compiling it to something that will run faster.
This appears to be javascript. Lots of games use scripting languages for certain components. However, it is pretty surprising that they would implement a supposed "security" feature in such a way.
Thats the thing, its not a security feature at all, all you're doing by disabling that feature is extending the length of time you can play before checking in with the server, but if you quit the game without reconnecting you will still lose everything. Maxis must've decided that 20 minutes was the threshold before people would be really pissed that they might lose their progress.
The Glassbox engine was designed to be easily moddable. The problem is the games 'online' nature leads EA to ban people from making mods to keep people from cheating. There was a huge disconnect in the grand vision somewhere.
http://kotaku.com/5991077/your-complete-guide-to-the-simcity...
The bad PR move imo is that the company stated that the game requires "online access to servers for cloud calculations", but users have found a single line of code that when removed allows the game to work in offline play because it disabled the connection check every 20 minutes.
http://kotaku.com/5990997/coders-discover-20+minute-offline-...
But in general, EA is reviled for taking good IP/brands and killing them.
Here's a letter that was on reddit from an internal employee to the EA management:
http://www.reddit.com/r/gaming/comments/19xb2m/a_letter_from...