Hacker News new | past | comments | ask | show | jobs | submit login
Convert SimCity 2000 cities into Minecraft worlds (github.com/jgosar)
658 points by notpushkin 5 months ago | hide | past | favorite | 149 comments

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:


Clint Basinger's Lazy Game Reviews always has excellent reviews of Maxis games.

LGR - SimCopter - PC Game Review


LGR - Streets of SimCity - PC Game Review


The SimCity 2000 Retail Demo Disk for DOS


LGR - SimCity 2000 Network Edition - PC Game Review


LGR - SimCity Educational Version Unboxing & Overview


SimCity 30 Years Later: A Retrospective


The Sims 1: An LGR Retrospective Review


Clint is great!

I can't help but think your username was inspired by LGR. Put another coin in the 'HN usernames are on topic' jar.

If only they make more games of this type

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].

[0] https://en.wikipedia.org/wiki/Streets_of_SimCity

The music, the music was the other remarkable feature of streets of sim city.

"I'm just a splatter, splatter, splatter on the windshield of life."


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.

This was endless comedy for sure. The jank of the game only added to its appeal.

that game had so much potential, so many bugs...

SimCopter was actually the inspiration behind this project, but what annoyed me was that the buildings mostly looked nothing like in SimCity 2000.

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'm quite sure, that at least the one with the glass dome on top was in the game, because I remember trying to land on top of the glass dome.

Unfortunately that's the case in MineCity 2000 as well

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.

>> ‘Stanley Kubrick’s’ ‘Apocalypse 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.

Oh god, I am grown man who did not know the difference between these movies.

lol, it’s okay; we all make mistakes. :)

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.

My embarrassment comes from speaking with a cocky degree of self-confidence on a topic with only loose familiarity, in spite of life experience.

We have all been there

And of course there's The Simpsons association of Apocalypse Now and Highway To Hell!


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.

I remember it was possible to import your own maps in the demo... by just copying your own city over the demo one.

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.)

Ps I’ve never seen that domain you can also play Simcity 2000 at https://archive.org/details/SimCity2000

But where can we play simcopter? I need the ability to dangle my passengers out of the helicopter in a threatening way. It’s been awhile.

Someone actually went and created patches and installers to work with modern Windows for both SimCopter and Streets of SimCity.


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.

Sounds like you're volunteering! Have fun!

I didn’t see any statement on the site that the ads and donations were ringfenced to cover server costs.

Sure, I said they're welcome to make a profit.

Plus, intent isn’t relevant. If the copyright holder doesn’t pursue, you’re fine. If they base their decision on “intent,” then fine.

Infringement is infringement, intentional or not.

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!)

Yeah, lawyer here.

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.

I never had SimCopter, but I did have the vehicle based one. I remember having fun playing in it in cities I made. Is it called Streets of Sim City?

I spent a lot of time in SimCopter as a teenager. It was always fun to get to explore the cities I had spent so much time curating in SC2k.

I remember being able to do this in SimCopter, but at least as a kid I could never get it to import right.

SimCopter was awesome! I had forgotten all about it. I didn't realize you could import SimCity cities!

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.

Pretty cool!

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/

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.

I share the same concerns. The intensity of the traffic simulation will be adjustable by the player.

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.

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!

This is quite cool! Best of luck!

Thank you for sharing!

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.

While Ride of the Valkyries blares in the background, obviously.

Showering them with water from a bucket.

And the mobs kissing.


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.

[0] https://theandrewbailey.com/article/122/SimCity-2000

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.

I also did the hydro mountain. From memory the hydro stations was one the few stations that lasted forever.

Hydro mountain back then, poop power now!

Clicking on the helicopter to crash it :)

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).

OLPC/EA SimCity Contract:


>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:


Micropolis: Constructionist Educational Open Source SimCity:


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?

I thought it was interesting that not only does this guy choose C# over Java but he chooses to write getter methods instead of properties


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.

Or Unity, their flavor of C# discouraged properties for a long time, it does support them now, though.

This is the real metaverse we care about.

Is this what “reticulating splines” means, then? Almost 30 years later and I still don’t understand but the phrase is eternally trapped in my mind.

I looked this up once to determine if it was real or just hilarity. And the answer is great. From [Sims Fandom](https://sims.fandom.com/wiki/Reticulating_splines) site:

> 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 sounds cool indeed. That's why this project includes a reticulateSplines method :)


It's compelling because SimCity 2000's terrain is very much a network of curved lines, so it sounds like a plausible part of the process.

Would love to see something like Magnasanti in Minecraft


"Your antivirus program might think that MineCity 2000 is a virus. It's not."

Exactly what a virus would say...

Antivirus: This is a virus!

MineCity: Exactly what a virus would say...

I wish the demo videos included walking inside the skyscrapers.

That looks great!

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...

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.

Thanks for the tip! I saw some .sln files and I assumed project information was only stored in a Visual Studio-specific format.

The dotnet command is aware of solution files,


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'm the author, and the GUI is indeed not the focus of this project. It's just there so people can do the conversion in a few clicks.

Yes, Mono did come with a kinda sorta cross-plat version of WinForms, which should do fine with something as simple as this.

Well, I wasn't too interested in the GUI anyway :)

Time to spin up the ole SC2k again. I haven't played Minecraft in VR yet, and this seems like a really good reason to try it out now.

I would definitely love to see more things like this that spin old games/software into new experiences.

This is the best use of a computer that I’ve ever encountered.

How much time does it cost to create one building? Would be cool to connect minecraft to a real running sc2k, adding/removing buildings on-the-fly.

The simplest ones can be done in a few hours. The latest one I did was the Statue which only took about 3 hours.

The most complex one so far is the big corporate tower with the KSIM sign on top. That one took a few days.

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.

some kind of mechanism must be devised to stream an evolving simcity world into minecraft live

How did they convert the 2D sprites to 3D blocks? Automatically or laboriously?

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).

You have to mine them one by one.

I had this exact idea but for OpenTTD worlds. Well done.

Things you didn't know you needed

Not sure why exactly, but this gives me strong nostalgic feelings for Lego Island.

So, uh, do I have to compile this myself? Anybody got an exe?

A noble quest

Well done. Cool project.

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

> only works on java edition

Yes, as the project says, Minecraft. Not the cut-down mobile game with microtransactions that claims to be Minecraft.

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?

I'd say it's a not-inaccurate summation to say "Bedrock" is the closed one (e.g. for consoles) and "Java" is the open one.

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.


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 invisible majority of players uses Bedrock.

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.

There is https://github.com/minecraft-linux/mcpelauncher-manifest, which can run the Android JARs on MacOS or Linux (by shimming/implementing the Android APIs it uses), but a few months back one of the updates dramatically changed the rendering system, and the lone(?) MacOs/Linux maintainer of mcpelauncher is still catching up. See https://github.com/minecraft-linux/mcpelauncher-manifest/iss...

Until that breakage, I ran it quite successfully on MacOS (although it _did_ have occasional crashes)

Interestingly, it looks like the Bedrock-based "Education Edition" is on MacOS, but normal Bedrock is not.

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.

[0] https://geysermc.org/

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.

Thank you for the high-effort comment!

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.

There is Minetest, which has at least one configuration that attempts to mimic vanilla Minecraft, but I'm not certain how accurate it is.

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)

Is it possible to connect to a minetest server through Minecraft?

> 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.

A lot of us who got the game using alpha codes can't even login anymore due to M$ shenanigans.

> Mojang-provided servers ("Realms") are Bedrock

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...

> Are the client/server interoperable?

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/

I had no idea the wire protocol was understood so well. Are there similar project to bridge, i.e. Minetest with Mineclone2 and Minecraft (java)?

wait till you hear how long it's been since simcity got a commit

Don't let your dreams be dreams, start coding!

It's technically inaccurate but probably fundamentally fair to say that "Bedrock" is the closed version and "Java" is the open one.


In case anyone was really wondering, it's a cheat code for Sim City 2000. It unlocked all buildings and gave you a bunch of money.

Very cool idea and execution.

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?

When did we get C# devs flexing on Java devs? Isn't like that like a paint by numbers expert flexing on a paint by letters kinda person?

Oh this is so mean ;)

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).

https://github.com/jgosar/mine-city-2000/blob/master/MineCit... contains "private byte[][][][][][][] _blockDatas;" which made my eye twitch.

But generally I think it's just older than the git history indicates. The sln file mentions Visual Studio 2010!

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.

Yes, I mostly worked on Java and C# projects at the time, so it's understandable:)

Ye this commit [0] imports a "local repository" with Visual Studio 2010 .sln file.

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...

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.

An array can be much more performant than a list in many circumstances, but I agree it's a little strange to completely avoid lists.

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(++)?

I'm saving this as it's an excellent guide for taking my dated pre-LINQ C# skills and polishing them up as need be

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?

Applications are open for YC Summer 2023

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact