This reminds me a lot of SimCopter (1996) where you could also import your SC2k city and fly around and do missions. Mostly about helping people in various forms of distress by picking them up and flying to various destinations. Great flashback from 90's gaming, I remember tossing people out at random when flying which was always hilarious when you're a young kid. You could then pick them up and fly them to the hospital to get fixed up.
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:
SimCopter wasn't the only game that allowed you to import from SC2k -- the city import is the only notable feature of the otherwise-unremarkable Streets of SimCity[0].
Streets of Sim City was great. I'd use a bug to create glitchy self-intersecting bridges I called "super springs" which launched cars straight up. The AI certainly didn't know what to make of that.
Streets of SimCity was great for making an outrageous racket by using the increased gravity cheatcode. Every polygon intersection would trigger the "suspension crashing" sound effect. Fantastic fun.
My biggest disappointment was the lack of Arcologies in SimCopter. If I remember correctly, the land they were originally on was just empty once imported.
I liked to play the SimCopter demo and thanks to it Wagner's Ride of the Valkyries still remind me of the game. I suspected (or maybe just hoped) that you could somehow import SimCity 2000 cities (I had the original boxed release, the first game I owned), but either it was not possible to do in the demo or I just failed to find the way (I was barely a teenager without the Internet access).
This is kind of like being a fan of early Simpsons, where exposure to one thing leads you to find out more about the thing they’re drawing inspiration from.
The association of Flight of the Valkyries and helicopters came from Stanley Kubrick’s Apocolypse Now.
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.
They may well just mean that making these sorts of mistakes feels worse when you're an adult. When children don't know the difference between a goose and a duck, or between N Sync and the Beatles, we don't think much of it, whereas suddenly as an adult this seems like a big deal.
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.
I preferred the flying toasters. I'm upset there's no classic flying toasters screensaver that uses the original graphics/style (the original had bagels, jumping toasters, and other animations), but not enough to make one myself.
Thanks for this, I usually hate to say sequels are bad (since Simcity 2000 was itself a sequel and much better than the original SimCity) but that series really went off the rails around when Simcity 3000 came out.
(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.)
This will always be my absolute favorite thing about PC gaming. The lengths gamers will go to ensure their favorite games still work or even improve them, even when the original studio doesn't exist anymore.
> Playclassic.games does not intend to violate any copyright or violate any license of a game.
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.
Hard disagree. Severs aren't free to run. They're welcome to recoup those costs and even make a profit from providing a valuable service. Ethically they're doing nothing wrong by letting people play a 30-year-old game for free, even if they're in violation of our utterly insane copyright laws.
A website costs a few bucks a month to run and the files should be distributed via BitTorrent anyway. This service could be funded by any single individual.
There's been a trend of putting 'no copyright infringement intended' on top of blatant copyright infringement and thinking they're fine. This is nuts. Legally, it's about as sound a defence as chasing down a crossing guard in your car while shouting "no injury intended!"*
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."
God I love SimCopter. played it so much as a kid but I never got to the fanciest helicopters because every run hit a bug where I couldn't enter the hanger anymore, I was too young to know that patching a game was even a thing, if it ever got a patch to fix that.
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.
My biggest issue with modern Simcity-likes is this blind focus on traffic simulation. I want a realistic simulation of a city, the traffic is a secondary effect of everything else, and that's where games are dropping the ball. It's crazy we haven't seen anything surpass Simcity 2000 even now.
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.
Amazing. I had a few questions about pathfinding inspiration since I had just watched NoClips video on Rollarcoaster Tycoon, but your linked video is already so in depth!
Hopefully Minecraft has a mod to let you fly around in a helicopter and pick people up from the ground only to drop them confused on top of a skyscraper.
If anyone here wants to try to recreate your Sim Copter glory days, I would recommend FlansMod. It’s an incredible mod family that is pinned to the ancient Minecraft 1.7.10 I believe. It has tons of vehicles and weapons from WW1 biplanes to mechs. There are definitely helicopters and I think they have passenger seats.
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.
In my experience there aren't many things minecraft doesn't have a mod for -- though sometimes it is a matter of what version of minecraft you want it for. mods at the very least tend to trail the main release version by a few cycles.
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.
By God I loved SimCity 2000 as a kid. Did anyone else build a "hydro mountain" in every city (basically a pyramid covered in water, to which you could keep adding hydro power plants as the city grew, was all the electricity you ever needed), or was it just me?
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.
One of my favorite games on the Commodore 64 was Raid on Bungeling Bay, in which you fly a helicopter around a 360-scrolling island map, knocking out enemy war factories. The map was surprisingly detailed and interactive for an early action game, with supply ships moving around helping to build defenses; you could destroy the six factories in any order, but each time you zapped one, the rest would tech up and get tougher. Very open for the time.
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.
Correct, but Will originally called it "Micropolis", however there was a disk drive manufacturer using that name, so he subsequently renamed it "SimCity".
"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).
>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):
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:
>[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:
I hope we can all begin to learn some lessons from stuff like this; I think this kind of thing is the only path to a remotely interesting "metaverse" to the extent that such an idea is valuable.
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?
> 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."
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).
Usually, building C# projects on Linux is as simple as getting the .NET SDK using your favorite package manager and running `$ dotnet build` at the root of the project. Just FYI.
Looks like the GUI uses WinForms, which means you won't be able to build it on linux, I would wager. You may, however, be able to run an already built version of it through Wine.
The GUI code looks very simple at first glance - just four buttons and file picker and background worker. Chances are this would be straight-forward to port to a .NET command-line tool that would be cross-platform assuming there's nothing Windows-specific in the domain logic.
Thinking about it, wouldn't mono support this fairly well? I don't have much experience with mono nor C#, but going from a sibling comment and my package manager, I would be tempted to install mono-msbuild-sdkresolver and run `mono build`.
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 cannot image when these tools are handed over to Gen-Zs, who are native to the Minecraft environment. I had tens of friends who used to spend their entire day playing Minecraft in school, and one of the greatest motives to play hours on the game is to recreate or improve an existing monument or a viewpoint of another game.
Hi, I did it manually, first some 2D drawings of where to put the blocks to correspond to the original game's pixels as close as possible, and then I built them using MCEdit, and finished the details in the game itself
Probably manual, given they have a specific list of supported buildings. But they're pretty simple so I can imagine it'd take an hour at most to build one them (in creative mode).
neat idea but the project is like 10 years old, and last commit was 3+ years ago and only works on java edition. would like to see something like this, but for other city builders like Caesar
I'm not playing Minecraft, but this has fascinated me from afar. AIUI, Microsoft has two teams on two different continents essentially developing two very similar but subtly incompatible versions of the same game. Funky.
Do they share any code or formats? Are the client/server interoperable? Does the C++ one even have a server implementation?
Servers are not interoperable by default. There is 3rd party software that acts as a proxy letting Bedrock players connect to Java servers but it'll just remove anything that the more limited client doesn't support.
They both use completely different network stacks, Bedrock using RakNet over UDP, Java using Netty (?) over TCP, so they have to be translated accordingly.
Yes. So clearly it's not a question of being able to run, or of weird graphics quirks or something. It's a strange omission. Given that Mojang is now owned by Microsoft, it's slightly suspicious…
You can use Geyser [0] to "bridge the gap" to Bedrock clients. There are bugs here and there, but it works pretty great to get everyone on the same server.
I recently got into Minecraft due to kid reaching Minecraft age. I keep meaning to write an intro for technical parents, because it's very confusing at first.
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).
IIUC, aside from non-deterministic timing of simultaneous updates, the things that are different about redstone in bedrock are mostly things that _could_ be considered bugs. eg. block spitting (extending a sticky piston for only one tick leaves a pushed block behind, rather than pulling it back in, which makes flying machines more compact in Java), and BUD power (interaction between block updates and redstone state changes)
Modders have done so; I believe the Minecraft map data structure, at least for the Java version (because it can be decompiled), is pretty well understood. The client/server protocol as used nowadays (?) was actually developed as an open source project at first, because the open source server software ended up being better than their own in-house one.
> IIUC, there seems to be a vague consensus that Bedrock is probably the future, for several reasons:
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.
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.
Could you give examples of what you mean? I've had a look through and there are certainly stylistic things I'd do differently, such as using "var" and LINQ more, and capitalising method names. But it's easy enough to understand despite that.
Don't get me wrong, it's not "bad" code (from a brief glance) but it's just clearly written as if it was Java code, and probably not in a usual IDE like Visual Studio, Rider or VSCode /w C# plugin (as that would typically scaffold a more C#-esque style).
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).
Hi, I'm the author of this project. I actually coded most of it in 2014, i just did some refactoring and uploaded it to GitHub in 2019 after I mentioned it in a job interview and the guy asked if the code is uploaded anywhere so he could look at it.
Hi jgosar, and thanks for joining into the discussion :D
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.
Excessive use of arrays can be a sign of many things, but not of being a java developer. Perhaps a sign of having been a java developer at some point in time before 2004 but not having touched the language ever since.
True, and "circumstances" basically means "if and only if we are taking about arrays of primitives". Outside of specific niches like http clients, I'd go so far as considering code written to deliberately tap those performance benefits as "written by people who ceased to be java developers" ;)
I will take your word about java, having never actually worked with it myself!
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.
There is no "array of structs", at least not until project valhalla finally lands and I don't expect that to happen any time before its ten years anniversary (in 2024).
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.
I looked at the code from a Java developer point of view, and besides the first 2 points, I don't see anything that was Java-specific.
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(++)?
We were working on a mix of Java and C# projects at work at the time I started writing this, so that's probably why the code looks like a mix between the two.
It's typical how this particular project / codebase attracts so many armchair code reviewers (in multiple threads); I've not seen anything like that on HN for ages. Is C# / Java some kind of trigger for it?
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...