This college kid painstakingly recreated ‘Super Mario Brothers’ for the Web

October 17, 2013

A screenshot from Full Screen Mario. (Timothy B. Lee /The Washington Post)

Full Screen Mario is a  meticulous recreation of the classic game "Super Mario Brothers" built on the latest Web standards. It reproduces the graphics, sounds and gameplay of the original Nintendo version. You can play through the 32 original levels, play millions of randomly generated levels, and even create your own Super Mario levels with the site's level editor.

The site is the brainchild of Josh Goldberg, a junior at Rensselaer Polytechnic Institute, where he studies computer science. We spoke by phone Thursday morning. The transcript has been edited for length and clarity.

Timothy B. Lee: How long have you been working on Full Screen Mario?

Josh Goldberg: I started last October, about a year ago. I was kind of restless. I'm always programming. I always enjoyed "Super Mario Brothers" as a kid. I played it on my Gameboy. I was thinking about doing something impressive. I came up with the idea of old games like Mario. I realized that Mario is not that complicated. It's a lot easier to remake than other games like "Age of Empires."

From the beginning, I wanted to do a random map and a level editor. I started working in October. I had a functional demo up by Thanksgiving. I ended up working on it way more than I ever would have expected. I finally decided to do an official public beta about a month ago because I wanted to get it out of the way before school started.

What was the most difficult part of the project?

The levels were really tedious to copy over. I looked at the maps that I found online and manually copied each block. It took a while but it wasn't too difficult. The most difficult probably was getting the physics to work. I'd never really made the physics before. People would randomly disappear during the game.

I like doing remakes because you can aspire to be perfect. [Once your version matches the original, you know it's right] The problem is it's so difficult to make it the same thing. A lot of time was spent nitpicking details trying to get it closer.

It was hard getting [better performance] too. It still doesn't work well on a lot of computers. It doesn't use WebGL, just Canvas.

So you're saying you didn't grab images and other files from an old ROM, you did all the graphics and levels by hand?

That's correct. I don't know how to go about reading the ROM. I don't know assembly. I have my own Gameboy with "Super Mario Brothers" deluxe edition [which I used as a model].

What kind of response has the game gotten?

I got a lot of responses. It's funny, I posted it on a subreddit months ago. It got downvoted to oblivion. Nobody really cared. [Later I posted to another subreddit] and it got around 100 votes. Then this one guy, I think it was Boing Boing, blogged about it. All of a sudden it blew up. I got 30,000 hits a day. At the time I was like, holy crap. I have shared hosting and the servers kept going down. I switched to Cloudflare. Global content delivery network caching is saving the day.

Now it's getting 300,000 unique visitors a day, so like a million hits. Just yesterday alone, the 16th, there were 385,000 unique visitors from Google Analytics. If you go on Twitter, it's crazy. People are really excited. I didn't expect it to be so sudden.

What do you plan to do with the project in the future?

If you go to Github, go to Full Screen Mario, right now there are 40 issues reported. I have a lot of small things I want to take care of that other people are reporting, things like little physics problems. On a larger scale, I'd like to store maps as JSON objects. I'd also like to get some sort of map sharing in there.

Right now when people use a level editor, they need a way of sharing the map. Perhaps an "e-mail a friend" function. I would very much like it to work faster, work better,  work on Firefox, IE, whatever else people are using.

It would be really nice if I could get gamepad.js support. That's a javascript library that lets you plug in an XBox 360 controller. It allows for the browser to be controlled by a gamepad or joystick.

Supporting multiplayer would be awesome.

"Super Mario Brothers" is copyrighted to Nintendo. Is that something you're concerned about?

Back in October when I started on it, I didn't care because I didn't think it would be a big project. [More recently, I've had some people asking about it.] I got Reddit gold for "lol idk" as a response [to a question about the copyright issues.]

I don't know what Nintendo is going to do. I've avoided using any Nintendo assets other than the IP for the game itself. I honestly don't know what to do in this situation.

Have you been contacted by Nintendo?

The project's been out on Github for around nine months. They haven't contacted me in any form. I assume that either they're going to do it within a week or two or they're not going to do it at all.

I do want to note a couple of things, though. There are a jillion sites on the Internet that allow you to download the games for free. [People can download ROMs of the original games and emulators to play them.] There are sites that have full engines for Gameboy. I haven't seen a single takedown for those. I think it would be a really jerk move for Nintendo to take it down. To take it down would be a spit in the face to Web developers and game enthusiasts everywhere.

SECTION: {section=business/technology, subsection=null}!!!
INITIAL commentConfig: {includereply=true, canvas_permalink_id=washpost.com/8bvh5zpd9k, allow_comments=true, commentmaxlength=2000, includeshare=true, display_comments=true, canvas_permalink_app_instance=m6yzjj840m, display_more=true, moderationrequired=false, includefeaturenotification=true, canvas_allcomments_id=washpost.com/km4ey0dajm, comments_period=14, defaultsort=reverseChronological, includevoteofftopic=false, allow_videos=false, includesorts=true, markerdisplay=post_commenter:Post Commenter|staff:Post Writer|top_commenter:Post Forum|top_local:Washingtologist|top_sports:SuperFan|fact_checker:Fact Checker|post_recommended:Post Recommended|world_watcher:World Watcher|cultuer_connoisseur:Culture Connoisseur|weather_watcher:Capital Weather Watcher|post_contributor:Post Contributor, childrenitemsperpage=3, includeheader=true, includeverifiedcommenters=true, defaulttab=all, includerecommend=true, includereport=true, maxitemstop=2, source=washpost.com, allow_photos=false, maxitems=7, display_ugc_photos=false, includepause=true, canvas_allcomments_app_instance=6634zxcgfd, includepermalink=false}!!!

UGC FROM ARTICLE: !!!

FINAL commentConfig: {includereply=true, canvas_permalink_id=washpost.com/8bvh5zpd9k, allow_comments=true, commentmaxlength=2000, includeshare=true, display_comments=true, canvas_permalink_app_instance=m6yzjj840m, display_more=true, moderationrequired=false, includefeaturenotification=true, canvas_allcomments_id=washpost.com/km4ey0dajm, comments_period=14, defaultsort=reverseChronological, includevoteofftopic=false, allow_videos=false, includesorts=true, markerdisplay=post_commenter:Post Commenter|staff:Post Writer|top_commenter:Post Forum|top_local:Washingtologist|top_sports:SuperFan|fact_checker:Fact Checker|post_recommended:Post Recommended|world_watcher:World Watcher|cultuer_connoisseur:Culture Connoisseur|weather_watcher:Capital Weather Watcher|post_contributor:Post Contributor, childrenitemsperpage=3, includeheader=true, includeverifiedcommenters=true, defaulttab=all, includerecommend=true, includereport=true, maxitemstop=2, source=washpost.com, allow_photos=false, maxitems=7, display_ugc_photos=false, includepause=true, canvas_allcomments_app_instance=6634zxcgfd, includepermalink=false}!!
Comments
SECTION: {section=business/technology, subsection=null}!!!
INITIAL commentConfig: {includereply=true, canvas_permalink_id=washpost.com/8bvh5zpd9k, allow_comments=true, commentmaxlength=2000, includeshare=true, display_comments=true, canvas_permalink_app_instance=m6yzjj840m, display_more=true, moderationrequired=false, includefeaturenotification=true, canvas_allcomments_id=washpost.com/km4ey0dajm, comments_period=14, defaultsort=reverseChronological, includevoteofftopic=false, allow_videos=false, includesorts=true, markerdisplay=post_commenter:Post Commenter|staff:Post Writer|top_commenter:Post Forum|top_local:Washingtologist|top_sports:SuperFan|fact_checker:Fact Checker|post_recommended:Post Recommended|world_watcher:World Watcher|cultuer_connoisseur:Culture Connoisseur|weather_watcher:Capital Weather Watcher|post_contributor:Post Contributor, childrenitemsperpage=3, includeheader=true, includeverifiedcommenters=true, defaulttab=all, includerecommend=true, includereport=true, maxitemstop=2, source=washpost.com, allow_photos=false, maxitems=7, display_ugc_photos=false, includepause=true, canvas_allcomments_app_instance=6634zxcgfd, includepermalink=false}!!!

UGC FROM ARTICLE: !!!

FINAL commentConfig: {includereply=true, canvas_permalink_id=washpost.com/8bvh5zpd9k, allow_comments=true, commentmaxlength=2000, includeshare=true, display_comments=true, canvas_permalink_app_instance=m6yzjj840m, display_more=true, moderationrequired=false, includefeaturenotification=true, canvas_allcomments_id=washpost.com/km4ey0dajm, comments_period=14, defaultsort=reverseChronological, includevoteofftopic=false, allow_videos=false, includesorts=true, markerdisplay=post_commenter:Post Commenter|staff:Post Writer|top_commenter:Post Forum|top_local:Washingtologist|top_sports:SuperFan|fact_checker:Fact Checker|post_recommended:Post Recommended|world_watcher:World Watcher|cultuer_connoisseur:Culture Connoisseur|weather_watcher:Capital Weather Watcher|post_contributor:Post Contributor, childrenitemsperpage=3, includeheader=true, includeverifiedcommenters=true, defaulttab=all, includerecommend=true, includereport=true, maxitemstop=2, source=washpost.com, allow_photos=false, maxitems=7, display_ugc_photos=false, includepause=true, canvas_allcomments_app_instance=6634zxcgfd, includepermalink=false}!!
Show Comments
Most Read Business
Next Story
Brian Fung · October 17, 2013