Convert SimCity 2000 cities into Minecraft worlds
github.com
github.com
But I must say I think the original SimCopter looks slightly better graphically than this Minecraft version.
You can play SimCity 2000 online here, by the way:
https://playclassic.games/games/city-building-dos-games-onli...
LGR - SimCopter - PC Game Review
https://www.youtube.com/watch?v=x4mh7Pc5MSI
LGR - Streets of SimCity - PC Game Review
https://www.youtube.com/watch?v=zi60A2-PcpM
The SimCity 2000 Retail Demo Disk for DOS
https://www.youtube.com/watch?v=G2b5HRRTH70
LGR - SimCity 2000 Network Edition - PC Game Review
https://www.youtube.com/watch?v=W9e3WlJChro
LGR - SimCity Educational Version Unboxing & Overview
https://www.youtube.com/watch?v=edXRNtuAGTg
SimCity 30 Years Later: A Retrospective
https://www.youtube.com/watch?v=TrScy1icWjI
The Sims 1: An LGR Retrospective Review
The association of Flight of the Valkyries and helicopters came from Stanley Kubrick’s Apocolypse Now.
…in what possible world; lol. I want to see that world.
I think you mean Francis Ford Coppola. :P Or ‘Full Metal Jacket’ - but your statement as it stands just makes me giggle.
I only found it so funny because obviously, those are two of the most significant and important films / directors of all time; and the concept of ‘Stanley Kubrick’s Apocalypse Now’ is just both utterly fascinating and totally humorous.
Not sure what your age has anything to do with your comment or mine; though? Except that I guess that obviously as a grown man you’d have a much easier time identifying these two films and their directors than, say; a 20-year-old? Is that what you’re saying? Sorry; I think it just went over my head.
I used to get Al Pacino and Robert De Niro muddled up, like badly enough that it made it difficult to follow Heat (which features both actors in major roles)! No, they don't look alike, I don't know why I couldn't keep that straight.
Whereas I had no problem distinguishing the real Queen Amidala (Natalie Portman) in the Phantom Menace while apparently that plot point caught out other people I watched it with the first time - shrug.
(It’s a shame we didn’t get a higher resolution version of Simcopter and Streets of Simcity instead of a long string of “The Sims” plus… well I quit gaming before they took GTA online, but I got the impression the GTA community is more into murdering sex workers for cash rather than equipping your car with an airfoil and a hopper so you can jump high in the air then glide down into areas of the map your opponent cannot reach.)
Ps I’ve never seen that domain you can also play Simcity 2000 at https://archive.org/details/SimCity2000
I thought there was a chance this site might have arranged licenses from the original publishers, funded by revenue from the (many) ads, but no, it appears to be good old fashioned piracy.
Edit: I tried Settlers, which has one of those copy-protection systems that involves entering information that can be found in the printed manual. Either I got very lucky, or this game has been cracked. Or, as the site euphemises it, “unblocked”.
Now, I’m sympathetic to the cause of video game preservation and use of abandonware, but the second you put ads around it and make money off it for yourself, you cross a line.
Infringement is infringement, intentional or not.
Copyright laws are nuts too, and I'm very empathetic to game preservation efforts, but this kind of boilerplate is legally nonsense. Don't make the mistake of thinking this in any way protects you, folks. It does nothing. If anything, you're indicating that you knew that the content was under copyright protection at the time you posted it and that you knew you didn't have permission to use it.
(* Not saying they're equivalent offences, just equally nonsensical defences!)
I suppose (and this is absolutely not advice) another thing to consider is "likelihood that someone is going to take time out of their day to sue you."
Do with that what you will.
If people are still interested in playing city builder games, I am in the middle of developing one right now. I cleared the CPU hurdle of path finding via developing my own algorithm ( old demo here: https://www.youtube.com/watch?v=7q0l87hwmkI ). Here I am pathing around 300,000 units to their own unique destinations.
Unfortunately I dont have a video update yet, but my game's graphics are now isometric (like SimCity).
I also take a little inspiration from The Sims in that the player will see the interior of the buildings so they can watch their citizens live their lives.
Most frequent updates: https://www.reddit.com/r/Archapolis/
Wil Wright did research into city dynamics and turned that into a series of games. And even if the sources he used weren't perfect (even questionably neoliberal), what he did was unique and nobody seems to be trying to replicate what he did with better information, better research and a better understanding of people/psychology/sociology.
I have up to three options I am considering implementing.
e.g. The player could set a fixed percentage of units that teleport to their destination.
The whole thing was pushing the bounds of the Minecraft engine beyond reason when it was being actively developed, and has largely been abandoned. Still, I was hosting a Flan’s server to play w/ my kids as recently as last winter. If you can live with the bugs it’s an incredibly fun mod, and a masterclass in Java hackery.
I played SimCity 2000 all the time when I was a kid. Still got the CD and some save files, and built a retro PC that can run it.[0] (I even have the same sound card that the family PC had, so the MIDI is exactly the same.)
Walking around my cities in Minecraft would be so surreal.
To this day, whenever I'm stuck in traffic, I say out loud: "Sim Copter 1 reporting heavy traffic".
My addiction still hasn't cooled, as the main game I play these days, when I play anything, is Cities: Skylines.
Anyway, the dev found that he enjoyed designing the map and its interactions more than he did actually playing the game, so he decided that his next game would be all about building a map. He called it SimCity.
https://en.wikipedia.org/wiki/Micropolis_Corporation
"Dollhouse" also went through a lot of names before settling on its more marketable and obvious-in-retrospect name "The Sims".
After convincing EA to relicense the free original source code of SimCity under GPL3, I renamed the open source version "Micropolis" so as to avoid using the trademark "SimCity" (which would have contractually require getting EA's QA department to test and approve every change, which was not an easy task the first time (they'd never QA'ed a Linux game before, so I had to handhold them through running it under VMWare), a difficult task which I didn't want to repeat).
OLPC/EA SimCity Contract:
https://donhopkins.com/home/olpc-ea-contract.pdf
>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.
It was based on the original Mac version of SimCity that I first ported to NeWS/HyperLook then to X11/TCL/Tk and made to support multiplayer (which I had to disable for the OLPC version, due to X11's broken security model):
http://www.art.net/~hopkins/Don/hyperlook/SimCity.README
http://www.art.net/~hopkins/Don/hyperlook/HyperLook-SimCity....
http://www.art.net/~hopkins/Don/simcity/simcity-announcement...
http://www.art.net/~hopkins/Don/simcity/SimCity-For-X11.gif
http://www.art.net/~hopkins/Don/simcity/SimCity-Indigo.gif
http://www.art.net/~hopkins/Don/simcity/SimCity-NCD.gif
http://www.art.net/~hopkins/Don/simcity/SimCity-Sun.gif
Open Sourcing SimCity, by Chaim Gingold. Excerpt from page 289–293 of “Play Design”, a dissertation submitted in partial satisfaction of the requirements for the degree of Doctor in Philosophy in Computer Science by Chaim Gingold:
https://donhopkins.medium.com/open-sourcing-simcity-58470a27...
>[71] The Unix and then open sourced versions have undergone multiple iterations. The OLPC version is based on the original open sourced version, which is written in C for X11 with TCL/Tk. Hopkins introduced some optimizations and, I believe, some bugs in this version (the tile animation system). Hopkins would go on to rewrite Micropolis in C++, cleaning up and organizing the code. Java and JavaScript translations now exist, too.
>There were a couple of notable stipulations. First, that EA’s quality assurance (QA) test and approve any release titled “SimCity.” For this reason, Hopkins renamed the project “Micropolis,” an earlier working title for SimCity. Second, as a post-9/11 consideration, EA requested that the airplane crash disaster be removed from the game. Regard for publicity, both negative and positive, must have driven these stipulations as well as the decision to move forward with the project.
>SimCity began life as Wright’s private toy, and went on to be continually recast as commercial software (Maxis), serious simulation (Sun), and educational plaything (OLPC). It’s polymorphic quality allowed it to be perceived and used by diverse agents, who turned it towards satisfying their own particular agendas and contexts. This interpretive versatility, which can productively be understood through Sutton-Smith’s notion of play’s ambiguity, is crucial to SimCity’s evocativeness, and ultimately led to its availability as free open source software.
Open Source Micropolis, based on the original SimCity Classic from Maxis, by Will Wright:
https://github.com/SimHacker/micropolis
Micropolis: Constructionist Educational Open Source SimCity:
https://donhopkins.medium.com/har-2009-lightning-talk-transc...
And it's so weird. It's obvious that private companies buying game properties is very often death and annoyance -- but it's (sadly to me) equally obvious that straight-up "nothing but free open source" is unlikely to get the engagement and interest. (e.g. otherwise Minetest would have taken over Minecraft a while ago)
I have no good answers here, but I hope people think about the question?
https://github.com/jgosar/mine-city-2000/blob/master/SimCity...
Completely trivial, but as a long time C# developer, this was a big pet peeve.
For City name just do
public string CityName{ get; private set; }
Based on the fact that I see capital letters in String etc, this is either old code or this guy dove head first from Java.
> The words 'reticulate' and 'spline' both have dictionary definitions, which has led several people to determine a meaning for the phrase, such as "to make a network of curved elements." However, Will Wright stated in an interview that the term itself is meaningless, as SimCity 2000 does not reticulate splines when generating terrain; the phrase was included in the game because it "sounded cool."
https://github.com/jgosar/mine-city-2000/blob/master/MineCit...
https://www.moma.org/interactives/exhibitions/2013/designand...
Exactly what a virus would say...
MineCity: Exactly what a virus would say...
It's C# though, so I have no idea how to build this under Linux. I also wish there was a Minetest backend.
Similar: OSM to Minecraft[0][1] (there should be another code drop soon-ish, I heard [2] they plan to move the dev effort to GitHub by the end of the year).
[0]: https://minecraft.ign.fr/
[1]: https://github.com/ignfab-minalac/minalac
[2]: video, in French: https://peertube.openstreetmap.fr/w/cLpfr5jWd9SipjJTDKDPmj?s...
https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-s...
Of course, I believe a command-line tool is a better fit, especially if one wants to automate this.
The real value of this project probably lies in the buildings the author made :)
I would definitely love to see more things like this that spin old games/software into new experiences.
The most complex one so far is the big corporate tower with the KSIM sign on top. That one took a few days.
Yes, as the project says, Minecraft. Not the cut-down mobile game with microtransactions that claims to be Minecraft.
Do they share any code or formats? Are the client/server interoperable? Does the C++ one even have a server implementation?
They both use completely different network stacks, Bedrock using RakNet over UDP, Java using Netty (?) over TCP, so they have to be translated accordingly.
So I gather Microsoft has renamed Bedrock Edition to just "Minecraft" and then there's "Minecraft: Java Edition".
What's the player base split between these? Do PC players still generally prefer the Java Edition?
The majority of players that stream/post videos or use/write mods use Java.
If you want to play with friends (Macos, Linux etc.) you need Java, because Bedrock is Windows and consoles only.
Until that breakage, I ran it quite successfully on MacOS (although it _did_ have occasional crashes)
The original was written in Java, and people decompiled and reverse engineered it almost completely, so there are tons of mods that reach in and change things deeply.
They then created MCPE (pocket edition) which was a "cut-down mobile edition". That evolved into "Bedrock Minecraft", which is not "cut-down", and is what runs on mobile devices and gaming consoles (XBox, Switch, PS*). (It also runs on Windows, but not on Macs.)
At this point, the Bedrock and Java editions are more or less equivalently complex, although there are still differences in how many mobs spawn (generally fewer in bedrock, presumably due to (legacy?) performance constraints), as well as tons and tons of differences, subtle and unsubtle, in where and how things spawn, how the mobs behave, etc. Notably, there are significant differences in how redstone works that render most Java edition contraptions non-working in Bedrock.
There are actually many, many more Bedrock players, because lots of kids play on iPads and consoles, but most of the notable YouTube personalities and servers people stream from (Hermitcraft, etc.) are Java, and Java has an incredibly diverse universe of mods and modded servers.
Mojang (now a division of Microsoft) seems to value parity between Java and Bedrock: new features seem equivalent in both, and many point releases contain minor parity fixes. But it's unlikely they would make complex dynamics like redstone equivalent.
IIUC, there seems to be a vague consensus that Bedrock is probably the future, for several reasons: a) As you point out, having two completely different codebases and teams is crazy b) Bedrock runs (or can run - MacOS?) on everything c) Bedrock is C++, and hence can perform better d) There are more recurring revenue opportunities for Bedrock: Mojang-provided servers ("Realms") are Bedrock, and there are the "microtransactions" mentioned in a parent comment: you can pay for skins and add-ons (essentially "mods" that use a provided and sanctioned extension API rather than modifying the binary/bytecode). Minecraft is unusual in that you pay for it once but they keep updating and adding content forever (so far), so recurring revenue is important for Mojang.
If you're getting into Minecraft, I highly recommend Pixlriffs' Minecraft Guide for Java edition players, or Prowl8413's Bedrock Guide for Bedrock players. They will walk you through the early game, and then explain how the various "farms" work ("farming" is when you figure out how to build structures and systems that exploit the game mechanics to produce large quantities of particular resources).
To answer a couple of your questions, the client/servers are not interoperable, but there are proxies like GeyserMC that translate.
The C++ one has a server implementation (Bedrock Dedicated Server - BDS) available in binary form, that you can run on Linux or Windows. As far as I know, there are no third-party bedrock servers that implement all (or even most) of the dynamics of the vanilla game, since that would essentially require re-implementing everything, but if contributing to that process is your jam, I highly recommend the Dragonfly folks: their Go server implementation is quite clean, their discord is active and helpful, and their various proxies and tools and libraries are very useful.
Has there ever been any community-led effort to create and maintain a "Minecraft spec" (similar to the Tetris spec) and make an open source reference implementation, or is the game to complex for that?
Kind of surprising Mojang didn't go into that direction (e.g. to match Redstone behavior).
The stored data structures are well understood for both versions. See for example https://www.amuletmc.com/ (Editor, Python) or https://github.com/df-mc/dragonfly/tree/master/server/world/... (Code, Go)
I doubt it.
First of all, usually the workflow is that the Mojang team implements new features in Minecraft Java, and then the remaining Microsoft teams follow along on the Bedrock versions.
Secondly, and most relevant one, throwing away the Java edition means throwing away a large subset of the userbase that will never bother playing the Bedrock edition, and in games from business point of view, the number of eyes per screen counts very much.
You can also rent a JAVA realm. And if you outgrow the realm (want to use mods), you can download the world and run it with a "real" (modded) server.
Modded servers are another rabbit hole...
not officially. some projects[0] try to bridge the protocols, but I've never personally seen one that operated without issues.
[0] e.g. https://geysermc.org/
Slightly off-topic; if there ever was a excellent example of what it means when a C# program is being written by a java developer, this would certainly qualify.
Was this ported from a java project?
Here's what I've noticed so far:
- Uses camelCase instead of PascalCase
- Uses setter and getter methods instead of C# properties.
- Uses reverse DNS namespace com.mc2k.SimCityReader instead of e.g. JGosar.MineCity2000.SimCityReader.
- Lack of LINQ (It is such a big part of C#, that not using it at all is strange).*
- Lac of using generics e.g. List<string> instead of string[].*
- Excessive use of arrays (you'd typically use a simple IEnumerable<T> or List<T>).
- Lack of `var`.*
- Casting integer literals to short, byte, etc -- these all have equivalent literal notation.*
- Lack of extension methods.*
- Lack of maps (pattern matching).*
There could be more, but those are what I noticed.
EDIT: * Given that the original code was done with VS 2010 and .NET Framework 4, its fair to say that a few of the points above do not apply, but the code is nevertheless very java-esque (just from the first two points).
But generally I think it's just older than the git history indicates. The sln file mentions Visual Studio 2010!
I figure you noticed the drastic increase in repo activity and stars. What's your own opinion on java-ness of the code? Do you feel it is an accurate assessment?
I hope you didn't take it personal, I've most certainly done similar things when I learned C# after doing java for the initial university courses.
The original README mentions .NET Framework 4, so C# has progressed a fair amount since.
[0] https://github.com/jgosar/mine-city-2000/commit/f1cbe98601c4...
My understanding with array performance is that if you need to frequently read and write to a large, fixed-length enumerable (or if you can rework your problem as such), then an array of structs is often much faster. It's certainly on my mental list of things to try when dealing with large sets of data in hot loops.
The intuitive expectation about performance difference between array and a generic collection is that it's about method call overhead, because in practice, unless "no duplicate entries" set semantics are required what you call "enumerable" will be an object wrapping an underlying array almost ten out of ten times. But that's something JIT optimization excels at dealing with. The real advantage of arrays is memory proximity and in absence of project valhalla future VM features, that advantage only exists for arrays of primitives like int, float, double. Everything else will be a reference to some arbitrary heap address anyways, even if it's reference in a bare array (instead of references in an array wrapped by an object).
What you can do is rework your data into a form where multiples of something have the primitives of their logical fields in shared arrays, but that's not array of structs but struct of arrays. And I've never seen code like that in the wild, not outside a hobby project that I never even got to the point where I could verify the approach by profiling. I do believe that the pattern must exist, I some codebases, but I can't even think of a name people would recognize.
If anything, the code style is reminding me more about classic game code, where they use arrays instead of List and are more concerned about data types and memory usage. Maybe this person is coming from a background of game programming and/or C(++)?