I think, when he is the author, than he can decide which licence to use. There are many examples (like MySQL) where double licensing is used. The original author can decide, which licence he finds appropriate.
The author of micropolisJS is not the author of 3D City. In this case, 3D City needs to be licensed under the GPL, and I believe 3D City needs to include the copyright details for the original port.
In addition, micropolisJS has additional terms added to the GPL [0], which are clearly linked to from the top of every source file in micropolisJS [1], which need to be distributed with 3D City.
They're all derived from the original source code of SimCity from Maxis, that I ported to Unix for DUX Software starting in 1991 (see http://art.net/~hopkins/Don/hyperlook/SimCity.README and http://art.net/~hopkins/Don/simcity/simcity-announcement.htm... ), and which was donated by EA to the OLPC project under a modified version of the GPL V3 license, with the condition that the name "SimCity" only be used for versions of the game that have been reviewed and approved by EA QA:
2.1 Modification. EA hereby grants to OLPC a non-exclusive, non-transferable, non-sub licensable, non-assignable, revocable right and license to modify the Original SimCity as provided by EA for the sole purpose of producing a version of the Original SimCity for distribution on laptops provided through the OLPC Program pursuant to the specifications set forth in Exhibit A ("OLPC SimCity"). All right, title and interest in OLPC SimCity and any interim modifications shall belong solely to EA. OLPC SimCity, and any subsequent versions, will not be distributed by OLPC unless the software meets the requirements set forth in Exhibit A. For the avoidance of doubt, nothing contained in this Agreement shall be deemed to limit or restrict EA’s right to use, modify, sell, distribute or license the Original SimCity in any other manner as EA so desires.
EXHIBIT A

Territory: Worldwide
Original SimCity Code: Title: SimCity (published in or about 1990)
Format: Unix Platform
Deliverable Items: EA will deliver to OLPC the following materials on or shortly after the Effective Date:
1. Source code for the Unix port version of the Original SimCity.
2. Any EA Documentation that EA deems necessary.
General Software Requirements: OLPC agrees that the OLPC SimCity will not be approved by EA for distribution under Section 2.2 of this Agreement, until the OLPC SimCity meets the following general software requirements:
1. EA’s QA team is unable to crash the game in sixteen (16) man-hours of play-time.
2. EA’s QA team is unable to find images/language that is deemed inappropriate to achieve an “E” rating by the ESRB standard.
3. No use of any EA Trademarks that would reflect negatively upon the established reputation of EA.
4. Add copyright/license information to each source file to reflect the proper licensing.
Specific Software Requirements: OLPC agrees that the OLPC SimCity will not be approved by EA for distribution under Section 2.2 of this Agreement, until the OLPC SimCity meets the following specific software requirements
1. The Air Crash Disaster is removed from the game.
2. EA approved splash screen is shown before the start of the game.
3. Simplify the Main Menu with EA provided GUI elements.
4. All text in the game must be legible.
5. Game audio must work.
6. Remove all attempted multi-player features.
7. SimCity Should be properly integrated to the XO’s GUI
8. Code for the EA approved splash screen is not included in the source code to be distributed with the OLPC SimCity executable.
If he is not the same author, then you are right. One statement from an other poster suggested, that he is.
The original author would have the right to add new alternative license conditions as he wishes to.
Maybe the author of 3D City should say something about it.
Edit:
Now I saw, what you mean. MicropolisJS seems to be an alteration of the GPL'ed Micropolis of an other author. And the owner of MicropolisJS stripped the GPL license from it to use it in the other project (btw. why?). I am no lawyer, but it really looks to me as a violation of the GPL, at least without permission of the first author.
It's not a clone, it's derived from the original SimCity source code, which EA licensed under GPL V3 with the added condition that it should not be called "SimCity" without EA's approval. So it's important that all versions of the code include that license and the required provisions.
2.1 Modification. EA hereby grants to OLPC a non-exclusive, non-transferable, non-sub licensable, non-assignable, revocable right and license to modify the Original SimCity as provided by EA for the sole purpose of producing a version of the Original SimCity for distribution on laptops provided through the OLPC Program pursuant to the specifications set forth in Exhibit A ("OLPC SimCity"). All right, title and interest in OLPC SimCity and any interim modifications shall belong solely to EA. OLPC SimCity, and any subsequent versions, will not be distributed by OLPC unless the software meets the requirements set forth in Exhibit A. For the avoidance of doubt, nothing contained in this Agreement shall be deemed to limit or restrict EA’s right to use, modify, sell, distribute or license the Original SimCity in any other manner as EA so desires.
And on a completely unrelated topic:
Q: How do you know there's an elephant hiding under your bed?
I'm the author of micropolisJS. No. I did not strip the GPL license. I am not the "culprit" as you put it above.
Look at my Github repo: the LICENSE/COPYING files contain the GPL, and it's mentioned in every other file. The correct license has been in place since my initial commit in 2013.
I was pointing out that 3D.City, the version linked up top, essentially lifted the simulation code straight from micropolisJS. It is the copy/adaptation of my code in 3D.City that had the GPL License stripped.
Sorry, I totally misinterpreted your statement. Deleted some wrong answers here, where possible. But I was unable to react directly, because the system did not let me.
Would you have any recourse if he went the other way, and made his code AGPLv3?
You would be unable to use that code unless you moved the entire whole work over to the AGPLv3 license, would you be prepared to do that in order to integrate forked changes?
I'm not sure I understand your question. You can't just take other people's code and change the license willy nilly. Often you can incorporate code with different licenses, but only if the licenses are compatible.
Well the author could always append AGPLv3 licenses to all of his original code. The parts that he integrated from MicropolisJS would still remain licensed under the GPLv3, but the greater work and resulting binaries would be licensed under the AGPLv3.
True, they could do that. Your original comment said "recourse", as if it would be bad to take GPL code and integrate it into a AGPL project. Which is also part of the reason I don't understand your question—Why would one need any recourse when someone else is abiding by the terms of a license?
note that the point of the gpl is not to let the person you forked from reintegrate your forked changes; it's to ensure that no derivative of your work ever locks the end user out. agplv3 is perfectly consistent with that.
You're misreading that comment. It does not say what you think it says. What it says is "I wrote MicropolisJS. Someone else took that code and stripped out the licencing headers, and that version is used in 3D.City".
Mocropolis is released under GPL. MicropolisJS is released under GPL. Someone took some code from MicropolisJS and removed the header, and that code is used in 3D.City. The person who removed the licencing headers is not the author of micropolisJS.
It is not necessary, that it is the same guy. When graememcc adds a new license to his own work, than he can do it and an other person can use this license with agreement of the first author.
UPDATE: As much I see now, it seems that graememcc did not consent in using his work with altered license. So it is a violation.
There are three pieces of software. Each software was written by one person.
Micropolis is gpl'd.
MicropolisJS is a version of that, and is also correctly licensed.
3DCity - the submission here - is written by someone else. This person stripped the gpl headers and re-used some code without correctly licensing that code.
There are small details like laying out roads and making power lines go over them etc that are super-fiddly too.
I know this because I played around with my own simcity for a while, first in true 3D (making curvy roads look nice is damn difficult) and then a 2D grid.
The worker code is interesting. Looks like a single observer that watches everything and dispatches to methods on a global state object. One would expect one observer per subject. Is there some implementation detail in web workers that makes this design more efficient than registering an observer per event?
For clarity, by user input it handles the callback of the map being clicked to delegate which tool it's going to use and to update the budget etc... I was excited at first to see all the event handlers setup in a thread that wasn't the UI thread because event handlers are expensive but that doesn't appear to be the case. AFAIK webworkers are fairly isolated so something like setting up event handlers would not be possible.
In Chrome on OS X I find myself clicking to place a zone then having to wait, then move my mouse a tiny bit before the zone would appear. If I started moving the mouse too much after clicking it gets put in the wrong place and if I don't move the mouse the zone never appears.
After 10 minutes I hit a bug where adding more zones seemed to place an 'invisible' zone. Which deleted the trees that were there and could be connected to electricity but didn't draw anything on the ground and would never populate. Or at least I couldn't see if it was populated and I couldn't play anymore.
The Load and Save worked, the game is amazingly good. The use of "use strict" blew me away, I had no idea that existed, it gives me a sense that JavaScript is becoming a solid language.
The game, day/night, seasons, I would buy this. It might need to be converted to Java to lower CPU usage but even as JavaScript it actually uses less than I'd have thought.
Really enjoy this! Like everyone else, the nostalgia is so strong.
The only thing that seemed off for me was the "Drag", which I think somebody else mentioned. I found myself clicking and re-clicking it multiple times to pan around the map, which got old after a bit. That was in latest Chrome on Mac OSX.
Awesome! Brings back old memories of late nights and precious cities with the very first simcity.
At this point, my browser has ground to a halt, my retina macbook is running very hot, and the little green rectangle does not follow the cursor anymore to aim where i'm going to plant the next building: https://dl.dropboxusercontent.com/u/14314213/Screen%20Shot%2...
Surprisingly it runs on my Jolla. I thought the browser is not enough bleeding-edge. It's pretty smooth as well, although switching to snow kills it a bit.
I'm really glad to see this wonderful work that people have done based on the original SimCity source code! many thanks to Will Wright and the people at EA/Maxis and OLPC for helping make it open source, and to everyone who worked on making it run so nicely and easily in the web browser. This project shows exactly why that was an important thing to do, and I hope it inspires others to do similar things.
On the newest FF it's very slow (maybe not WebGL?) and on the current Chromium it's not even loading. Both running on a freshly installed Ubuntu 14.04.
Do you have proper drivers for your video card on Ubuntu ?
On my MacBook Air runs smooth on both Chrome and Firefox. Same on Windows 8.1. Unfortunately, I can't test it on Ubuntu because I don't have a GUI installation of Ubuntu (I use the server version).
Wow, this is very impressive. Some people say that anything that can be done in a C-type language will be done in JS between five and ten years later -- this is evidence for that point.
The gameplay feels nice, and it reminds me of Caesar II, if that game is familiar to anyone. That being said, I think the game would benefit from introducing a few objectives.
About Caesar II/III, it was a nice city building game. But the 3DCity game is very similar to another game called SimCity/SimCity2000. Some mentioned in this thread that it even uses the open source code of the original SimCity 1 for its city simulation code.
A few observations about it: The drag view was buggy so I had to re-click it over and over again. It also crashed on me a a couple of times. Also placing objects was hard to do and it took me awhile to figure out how to drag the screen.
pretty awesome. just wanted to say that in latest chrome on windows 8.1, when the city gets in 30k population range, new buildings and zonings model's don't appear; well, everything new doesn't appear, pretty much. also, wire seems to have trouble being built over steets most of the time
Simulation code here:
http://lo-th.github.io/3d.city/build/city.3d.js
Background worker (neat idea) that handles all user input and costly events, to keep the 3D animations consistently fast:
http://lo-th.github.io/3d.city/js/worker.city.js