1019
I made FullScreenMario.com, now celebrating 2 million visits. AMA!
Hey Reddit, my name's Josh Goldberg; I'm the programmer behind FullScreenMario.com - an HTML5 remake of Nintendo's Super Mario Bros. You can play it for yourself on http://www.fullscreenmario.com, or grab the source code on http://www.github.com/DiogenesTheCynic/FullScreenMario (please post all bug reports there as well, after checking if they're already posted). Go ahead and AMA!
Proof: http://reddit.fullscreenmario.com, https://twitter.com/FullScreenMario, https://www.facebook.com/FullScreenMario
4:45 update: All right everyone, thanks for the great questions! Keanu Reaves is doing an AMA so we're done here.
HurpaDurpDeeDurp308 karma
Upvoted, I definitely agree with you on all aspects. I started the project not really knowing much about Javascript, or larger projects in general.
3R1C45 karma
This was very respectful and well-written. The author is a student and seems enthusiastically open to suggestions and commits to the source, so I'm sure he will appreciate this.
HurpaDurpDeeDurp67 karma
Nope! I emailed their legal team but other than the WashPost article they haven't said anything.
Cognuss24 karma
Obviously you're a talented web developer, so as a fellow web dev I must ask. What do you do for a living? Do you do web development for a large/medium/small company, self-employed, do something completely different?
Above all, thanks and much congratulations, good sir!
HurpaDurpDeeDurp46 karma
implying I make a living
I've done a few websites, but so far my income comes from the folks, and a summer internship that extends part time during the year.
keko19120 karma
1)Make a blog
2)Adsense the blog
3) Link from the game to adsensed blog
4) ????
5) Profit
Dcourtwreck20 karma
May I ask why the game runs so slowly for me? Is it because of firefox? I don't have a powerhouse of a machine, but I feel a triple core phenom and a couple gigs of ram should do the trick.
HurpaDurpDeeDurp14 karma
It should, but the game's rendering engine isn't extremely powerful. Try Chrome? Otherwise you can try making the screen size smaller, which kinda kills the point of naming it "full screen" but makes it easier for your browser to redraw.
phree_radical9 karma
It's painfully slow for me in Chrome. If I had to guess, I'd bet you're rendering everything as tiles across the entire screen and could improve it by prerendering them to larger tiles. But that still doesn't seem like such a big deal, so I'd go so far as to guess that you're rendering the tiles for the entire level even if they're off the screen...
HurpaDurpDeeDurp21 karma
You seem like you know what you're talking about - if you can optimize the code, it'd be great if you can make a commit!
https://github.com/Diogenesthecynic/FullScreenMario/blob/master/sprites.js
HurpaDurpDeeDurp41 karma
If Nintendo doesn't send a Cease & Desist, Pokemon's next! That won't be for a while though, there are soooo many things to be done with Mario...
savemejebus011 karma
I thought I wasted enough of my life in my childhood. Thanks for bringing it back! How much information is the entire game?
HurpaDurpDeeDurp8 karma
If you're asking about documentation, there should be some good stuff on the GitHub. I'll be submitting an article to GamaSutra soon, which will go over the basics of how it works.
Necro edit: http://bit.ly/HhIAKq
HurpaDurpDeeDurp16 karma
Three things:
It's the 21st century and we're still emulating games from the 1980s that were made for screens the size of post-its. Nintendo can make as many Pokemon XYZ ice cream cones or whatever as they want that take advantage of modern tech, but our nostalgia's already been attached to the older stuff. We should be able to play games like SMB or Mario or Zelda without cheesy modern remake graphics.
Tech recruiters.
A joke so incredibly vulgar nobody shall ever hear or speak of it again.
Edit: Oh crap almost forgot, four things! http://marathon.sourceforge.net/
corporat9 karma
Hey Josh! Congrats on being awesome.
Are there any funny bugs that you found during development that you'd like to share?
What kind of work went into the random level generator to make it not just a jumbled mess?
How much is it costing you to run the server?
Thanks for doing the AMA. Press on
HurpaDurpDeeDurp14 karma
Peach flipping the player off, that's one I didn't know before.
The random level generator was a pretty easy thing at first but took FOREVER to get right (and it still messes up once in a while). It follows a pretty simple logic for most settings:
Place a floor of a random length
Place 'obstacles' every 3 or 4 blocks on that floor
Within that logic, each obstacle can be anything from a pipe to some bricks to nothing at all; it changes for each setting.
There's actually no back-end at all for FSM beyond just a file server, so it's on Dreamhost shared hosting right now. $10 a month because there wasn't a sale when I signed up years ago :( CloudFlare is doing CDN/caching so it doesn't keep crashing, like when it first got discovered.
xraindrop8 karma
Ah yes, read an article about you yesterday on a Dutch tech site. You're not concerned about paying lots of money just because you made something awesome like this?
HurpaDurpDeeDurp13 karma
Nintendo's legal efforts are a little more concerning now that the site's gotten discovered... Hopefully they'll either let it stay up (who knows?) or just send a C&D like with most other projects, in which case I'll comply. A few legal folks have mentioned bringing the case to court, but I don't have the resources or patience to deal with that.
anonymousamish7 karma
Change sprint/fire to something other than shift. Sticky keys got me killed!
PrinceSebastian6 karma
Do you plan to make any other Mario or any 2D side scrollers full screen?
HurpaDurpDeeDurp5 karma
Oh, after Pokemon, who knows? I'd probably go on to Zelda or Metroid or something, but that's so far in the future it's hard to plan.
HurpaDurpDeeDurp2 karma
Whew, good question... I haven't had time for reading much the last couple years, which is really sad because it's a terrific activity and something that definitely helped me grow as a kid/teen. Maybe one of the 4 in the Black Company's Glittering Stones series by Glen Cook?
Edit: Remembering One-Eye and Goblin, lol
trest523 karma
Because of you, I have started teaching my son TODAY about Mario (he's 5 and we're now having a blast on your website!) Always wanted to teach him but don't know how to get a hold of a funtional Nintendo. Thank you!!!
HurpaDurpDeeDurp3 karma
That's beyond our legality. You must never go there, zelllooooooo.
HurpaDurpDeeDurp3 karma
That's clearly it!
(I'm working on IE and Safari support, there's something wrong with either the library or sprite rendering)
VerticalNystagmus3 karma
Can you start hanging out with the guy from Super Mario Crossover and make more awesome throwback Mario games? My 9 year old nephew loves your website and anything old-school Mario.
HurpaDurpDeeDurp6 karma
We haven't ever talked, but SMC's pretty freaking cool. Your nephew has terrific taste!
smokedrugsplz2 karma
I don't understand, there are tons of websites with the same exact game. Is this different or somthing?
HurpaDurpDeeDurp10 karma
Regular game size:
[:(]
This game's size:
[ :) :) :) :) :) :) :) ]
meowchamp442 karma
what made you pick the original Mario? Also how long did it take you to make this?
HurpaDurpDeeDurp5 karma
Older games are a lot simpler because they don't have complicated crap. Still, this crapper took a year to make.
HurpaDurpDeeDurp3 karma
Just to Timothy B. Lee from the Washington Post: "Nintendo is seeking the removal of the content, as we vigorously protect against infringement of our intellectual property rights."
HurpaDurpDeeDurp3 karma
I actually bought the fullscreenpokemon.com domain, just so nobody else can take it :) but it'll be a very very long time, if ever.
HurpaDurpDeeDurp1 karma
Java on BlueJ in high school for CS1 - AP
C++ in RPI's Data Structures, super hard but incredible class
PHP, MySQL, and JS for work with Matlab on the side (Drupal site, then some server stuff, a MySQL manager for BCI2000 in Matlab, and now moving BCI2000 from Qt4 to Qt5 with a video player).
This thing
masterofweapon1 karma
Why did you decide to use the up arrow for jump as opposed to a separate button? Really throws off my muscle memory! Are custom controls a possible future feature?
RationalHeretic231 karma
Are you worried about the legal implications that could come of this? Would you take a personal financial/legal hit or would the site just be taken down?
HurpaDurpDeeDurp2 karma
Maybe? It depends how the Safari/IE compatibility goes. Touch controls would be terrific, though I don't know how it would fare on mobile in terms of performance.
LordAnkou1 karma
Hey, I'm a firefox user that actually just discovered FSM yesterday. Any chance you'll make it so us firefox users can play too without having to download chrome?
EDIT: Wow, so ignore this question. Last time I tried to play it it said I couldn't without chrome. Now I clicked it and it works for firefox. Thank you for being psychic and answering my question before I asked it.
jayfeather3141 karma
Where would one report a glitch? I found one while playing a few days ago, and it's still not resolved.
jayfeather3141 karma
Ah, thank you. It seems as though the issue has already been brought up. It's the world 1-2 jump-and-disappear glitch.
HurpaDurpDeeDurp1 karma
Yeah what the hell is with that?! That has literally never popped up while I'm in the room.
HurpaDurpDeeDurp2 karma
Pokemon Crystal (or Gen I+II in general), because hhnnghhh so good! Also I know how I could get the programming to work, and it would terrific for user engagement. Imagine being able to log onto any computer with internet+browser anywhere, logging on, and continuing your Pokemon game, in full screen. Boom!
Shadic1 karma
Any chance of you directly replicating the physics from the original game? Super Mario Bros. has some pretty fantastic and smooth controls that I think are missed often by fan replications.
HurpaDurpDeeDurp3 karma
missed often by fan replications
You can say it, FSM's not perfect :P
It's an active issue on the GitHub page, and definitely something I/we're working on.
HurpaDurpDeeDurp2 karma
Holy cow, that's a good one! No, I was just using my own GBAsp and The Mushroom Kingdom
Quenty1 karma
How much time did it take you to make this, and how did you learn/were motivated to learn HTML5? Web programming is cool, but finding an application is really hard -- where would you suggest starting?
HurpaDurpDeeDurp2 karma
Take classes if you can, but otherwise try some small projects on your own. www.codeacademy.com is a great place to start, HTML5/JS/CSS3 are terrific tools and really the future of the web.
HurpaDurpDeeDurp3 karma
Tell the Specialist Staff Captain Brigadier General Elect, 1.4 Stars, that once he gets his own AMA he can call the shots.
(Edit: unless you mean the actual b-president, in which case yes sir how are you doing today)
mitman1 karma
Hey Josh! Thank you for making it. It really brought back some good memories.
What are your favorite games to play/consoles to play on? How long did it take you to make?
Thanks for doing this AMA!
HurpaDurpDeeDurp3 karma
Oh boy, the first couple of Pokemon generations for GBC, Age of Conquerors for PC, Halo 1 for PC (also Xbox, but holy crap the PC multiplayer)...
I started it in October '12 and worked on it on and off for about the next year.
pixelsonascreen1 karma
Hey I jut discovered your site a few days ago! I wanted to thank you for the link to Aleph One I've been playing that as well as Mario now, have a good day!
kojoov1 karma
FSM. Flying Spaghetti Monster and Full Screen Mario, coincidence? I think not, also I sense a real lack of Mario's famous brother Loogy
erictheeric1 karma
Not sure how to post bugs in github...
Some OSs catch repeated tapping of shift and enable assistive technologies or launch a dialog prompting for such to be enabled. On my Windows 8 system, the latter occurs about halfway through 1-1 while running (after firing) and Mario sprints into a goomba to his death. Is there an alternative fire/sprint key?
HurpaDurpDeeDurp3 karma
I just updated the source to allow for using CTRL, and will be updating the public site for that within the hour. I'm also working on an options menu, so you can change your controls.
Edit: It's live! Clear your cache and ctrl'll work.
jayseejc1 karma
Any chance for multimonitor support? When I try and stretch the game accross both my screens it simply shows up blank on the second screen.
HurpaDurpDeeDurp1 karma
That's probably an issue with your computer.
http://www.reddit.com/r/gaming/comments/1onkhg/triple_screen_full_screen_mario/
reciprocate061 karma
I broke Mario on the second level.
Hit the coin though the brick and he went up really fast and never came back.
but he can still shoot fire balls on the ground was unable to move him Picture for you http://imgur.com/a/1WJuo
all and all looks like a cool project though
Bonejunky1 karma
If Nintendo forces you to shut down, will you shut the project down totally or will you just change the sprites and music?
HurpaDurpDeeDurp1 karma
I'll do whatever they want in shutting down, there's nothing to be gained by changing sprites and music. If the engine does become modular (like it should!), it'll probably end up just becoming a generalized framework, where Mario is just a replaceable module.
Fubar_Chess1 karma
Thanks for entertaining me during work hours! Wait, I didn't say that...shhhhh
If you had referenced the original code, was there anything that you were surprised about the method it was coded? (in terms of - "wow, that was very clever of him to do that particular level that way") and did you find any extra easter eggs?
TheMightyDane1 karma
I think I saw this in a tv show recently didn't I? I can't remember why I started playing it, but I came to the realization that I must've seen it being played somewhere.?
HurpaDurpDeeDurp1 karma
Buzz60, maybe? A couple of Youtube personalities did articles on it as well:
http://buzz60.com/#!video/content/super-mario-bros-now-free-and-playable-your-browser
http://www.youtube.com/watch?v=D6mZ2TP8hZY
xraindrop0 karma
A fullscreen Legend of Zelda: Ocarina of Time would be awesome. Just Saiyan..
HurpaDurpDeeDurp2 karma
http://www.youtube.com/watch?v=OYa5aQb3YGE
Edit: Turns out my roommate had never seen this, so we stopped his GTAV game to watch it. nnnghhh carrot cake
Dolphman1 karma
Is that even really possible? Thats is a 3d rendered game. few engines support web browser rendering
RoboRevo0 karma
I love Full Screen Mario. My question: will controller support be available? I don't know if it's even possible, but I'd love to play it with my Xbox controller.
HurpaDurpDeeDurp1 karma
Maybe eventually? :P
https://github.com/Diogenesthecynic/FullScreenMario/issues/3
StickleyMan-2 karma
Very cool game. Thanks!
Can your next game feature the live-action Super Mario? That would be fantastic.
-MURS--3 karma
What kind of questions do you possibly expect to asked?
Why not just say I'm advertising the site?
radium-v243 karma
I'm going to be brutally honest here, and I'm probably going to get down-voted, but I'm not impressed with the underlying code for the project. I don't even know where to begin.
You're obviously passionate about Javascript, but runtime engines and best practices have changed dramatically in the last few years. Some things that stick out could easily be chocked up to coding style or preference, but when those preferences aren't well-adjusted to current-day standards, it leads to a perpetuation of those bad practices and hinders the growth and evolution of web development overall.
I'm posting this here, instead of on Github, because these aren't quite bug reports. I'd be more than happy to contribute though.
Syntax and readability are more important than shortcuts.
Cutting corners in the interest of character count is useless. It's better to be able to read the code than to have to interpret it line-by-line.
For hinting, I recommend JSHint. It'll be nicer than JSLint, but it'll still likely hurt your feelings.
Here are some JSHint errors/warnings that popped up:
A lot of syntax errors can be solved by linting or hinting, and following a style guide. Here's Google's Javascript Style Guide. You'll find that most projects on Github follow the same code conventions, and for very good reason. When you make your code consistent and readable, other developers will be more likely to like you and contribute to your projects.
Read Douglas Crockford's Javascript: The Good Parts and Nicholas Zakas' Maintainable Javascript.
Use an AMD-style, modular system like Require.js or Yahoo Module Pattern because Global variables are evil. The basic idea behind a modular system is that every piece of functionality is broken down to its basic form, and no less. It helps to keep things organized. Even if you choose not to use a framework, following a trusted organizational pattern is a good idea. Consistency is key.
Check out Backbone.js or Underscore for data manipulation.
I really like the project, but the code is unwieldy and confusing.
View HistoryShare Link