Friday, July 26, 2013

Fixing Problems with Super Meat Boy for the Mac: Ultimate Edition

Note: I've come to hear that (at least) the "running Super Meat Boy fixes" I've described below don't work for everyone. Even so, you might have success running the game but have trouble getting a controller to work or vice versa. Thus, skim this post before putting it off as it may help you in one way or another. Also, please read the closing notes.

You've probably come to this post because you’re having issues playing Super Meat Boy on the Mac. Before I implemented the fix that I will discuss below, I had crashing issues entering worlds and many, many others had that and similar problems. You might have already been to the post I just linked to by Team Meat which acknowledges that there are problems with the Mac port. They seemingly fail to ever address them, however, because as of this writing, the post is over two years old with nary an update from them aside from a statement basically saying that controller functionality will break other game functions and thus will not be implemented (which is not true with my experience). I figured a solution out myself, and after figuring it out, I discovered that someone else in the comments of that post had done the same as me. So, currently it works for at least another person and myself although note that it is not 100% guaranteed to work in all cases. Some of these below steps may be scattered around the internet, but I wanted to make a clear, understandable central hub for all of the issues for not only running Super Meat Boy but playing it as well.

Here are my system specs if you for whatever reason want to reference them:
  • Mac Mini, Mid 2011
  • 2.5 GHz Intel Core i5
  • 16 GB 1333 MHz DDR3 Memory
  • AMD Radeon HD 6630M, 256 MB VRAM
  • OSX 10.8.4
Here's what I did:

For people with Steam

1. You guys have got it easy! Open the Steam application and find Super Meat Boy in your list of games. Right click (or hold control while clicking) on the Super Meat Boy game and click "Properties" in the menu that drops down.

2. Click on the button in the box that appears that says "Set Launch Options"; another box with a text entry field should appear.

3. Type or copy and paste the following into the text box*: "-highdetail -windowed -1280x720" without quotes.

4. Close the box. If you want to use a controller, look down further in this post for advice. Otherwise, just launch the game normally from the Steam window and everything should run basically perfect. Enjoy! Make sure to read the final notes at the bottom of this post before you enjoy the game, though.

For people without Steam

This will be slightly trickier than for the people with Steam; it will take more computer skillz:

1. Open the TextEdit application on your computer and make a blank document by going to File > New. Change it to plain text format by going to Format > Make Plain Text.

2. Type or copy and paste this into the document*: "/Applications/ -highdetail -windowed -1280x720" without the quotes.
(This is assuming your Super Meat Boy game is in the Applications folder; adjust file paths if necessary)

3. Save this document by going to File > Save and name it something along the lines of "Super Meat Boy Launcher" (it can be whatever you want) and save it somewhere (I would suggest the Applications folder as this file is how you'll be launching Super Meat Boy).

4. Next, open the Terminal application (found in Applications > Utilities) and type in "chmod +x " (without quotes and with the space!). Find the text file you save earlier and drag that onto the terminal window. After doing that, press enter.

5. Close Terminal and find the .txt file you made earlier. Double click the file like you would usually do to rename it, but instead of changing the filename, change the extension from ".txt" to ".command".

6. Before opening the game, read below if you want to use a controller with the application. Double clicking that .command file should open Terminal and then, quickly after that, the game with the parameters entered in the text file. The game should run basically perfect; enjoy! Make sure to read the final notes at the bottom of this post before you play, though. If you ever want to change the runtime parameters (such as changing it from running in windowed mode to it running in fullscreen mode), just right click (or control click) on the .command file, go to Open With, and set the file to open with TextEdit. This will open the file in TextEdit and you can make changes to the runtime parameters. After you're finished, just save the file and double-click it to open it as usual.

Thanks to Jenna's comment on the Super Meat Boy Mac blog post for influencing most of the steps in this sans-Steam guide!

*Note: You can change the "-windowed" above to "-fullscreen". The reason I choose to use windowed is that on my computer, that being the Mid 2011 Mac Mini with AMD Radeon graphics and 16 GB of RAM, I sometimes get small lag spikes in fullscreen mode which I otherwise don't get in windowed. If you're computer's specs are less than or equal to the specs of my system, than I would suggest launching the game in windowed mode. However, if you're computer has better specs than mine, then try using "-fullscreen" and see how it runs; you can always change it back later if you encounter any sort of lag. Lag in these types of games is not good!

Using a Controller

Before starting the game, plug in a compatible controller if you want. This controller should have a Direct Mode capability in order to properly run with Super Meat Boy on the Mac. If you don't know whether your controller has Direct Input, just plug it in before starting the game and see if Super Meat Boy recognizes it as a controller. Xbox controllers will not run with Super Meat Boy just "plug-n-play" on Mac systems as those use a Microsoft proprietary format called Xinput. I have a wireless PS3 controller and my Logitech F310 Gamepad (which has a DirectInput/Xinput switch on the back) and have figured out a workaround in order to get both PS3 and Xbox controllers to function almost to what Team Meat had in mind. I'm not sure how a wired PS2 controller would work. I'm assuming it would use the same key bindings except it wouldn't require the Bluetooth setup that the PS3 controller does. If anybody finds out, let me know in the comments!

PS3 Controller

Note: You will need a Mac with Bluetooth capability. There's almost no chance you don't have Bluetooth if you have the ability to run this game, but just putting it out there.
  1. First, download the free program Enjoy, which is a key-binding software. Install it as usual by moving it to your applications folder.
  2. Next, connect your PS3 controller to your Mac. There's a great video on how to do that here.
  3. Once that's done, open Enjoy and you'll find your PS3 controller on the left hand side. Open the drop down menu from your controller and bind the following buttons to the following keys:
  • 4: Escape
  • 5: Up Arrow Key
  • 6: Right Arrow Key
  • 7: Down Arrow Key
  • 8: Left Arrow Key
  • 11: W
  • 12: Left Shift
  • 14: Escape
  • 15: Space
  • 16: Left Shift
  • Optional: You can bind the up and down motions of the joysticks. By moving each joystick up or down while in the window, it will take you to the axis it corresponds to as is what happens with each button. You can bind these up and down movements to the up and down arrow keys if you wish. However, it's only really useful for navigating the main menu so it's not really worth it.
      4. Once all of these are bounded, then you can click
      "Start" at the top of the window in order to start emulating keyboard buttons from your gamepad.
      5. Finally, start up Super Meat Boy with whatever method you're using and everything should be         
      good to go! Here are what the buttons do in game:
  • D-Pad: Moves character and Menu Navigation
  • X Button: Generally equals the Xbox's "A" button; you can also think of it as "Enter". In game, it is jump.
  • Square: Run button. Hold this while using the D-Pad to make your character run.
  • Start/Circle: Escape. Use this to get to the pause menu in game or to go back in the hierarchy of menus.
  • Left Bumper: Replay current level (you will see this prompt at the end of every level you complete).
  • There is a problem I could not overcome: I could not successively bind the "Save Replay" button It is technically Left Shift but no matter how many times I tried pressing it (I bound it to the right bumper) I could not save a replay after completing a level. So, unless somebody can help me on this front, it seems as if the only way to save replays on levels would be to play Super Meat Boy in keyboard mode or with a "plug-n-play" controller. Not a necessary functionality (I covered all of those), but kind of a bummer nonetheless.
Xbox Controller
  1. Download this free Xbox 360 Controller mapper here and install it as usual. It will require a restart.
  2. Download the free program Enjoy, which is a key-binding software. Install it as usual by moving it to your applications folder.
  3. Plug in your controller (note: I only have a wired Xbox controller. Wireless ones are supposed to work, though) and open Enjoy. Your Xbox controller should be listed on the left. Open the drop down menu and bind each of these buttons to these keys:
  • 6: Up Arrow Key
  • 7: Down Arrow Key
  • 8: Left Arrow Key
  • 9: Right Arrow Key
  • 10: Escape
  • 14: Left Shift
  • 17: Space
  • 18: Escape
  • 19: Left Shift
4. Once these are mapped, click the "Start" button at the top of the window and open the game
via whatever method I described above. All of the buttons should work as described in-game except 
there is some weird button behavior on the menus and somewhat in the game. While on the main
menu screens, down D-Pad is equivalent to the "A" button or Enter; this means in-game, pressing       
down D-Pad makes you jump. Left D-Pad seems to be equivalent to escape, however left D-Pad
in-game seems to only make Meat Boy go left, so that's good. Finally, similar to a problem the PS3
controller was experiencing, the "Replay Level" function doesn't seem to work on the controller.
However, you can press "w" on the keyboard at the end of a level to replay the level regularly.

Closing Notes

Getting past that Team Meat had to make us Mac users do this, I am glad I could make a centralized hub for all of the problems plaguing Mac users with this game. Make sure to post your system specs and a guess of your average FPS if any of these solutions work for you in the comments below. Furthermore, make a comment of your specs if the fixes don't work for you so we can make lists of computers that may or may not run the game for good reference. Also, make sure to post controller specs if you have a controller not mentioned in this post that works "plug-n-play" of that doesn't work "plug-n-play "with Super Meat Boy. I can start making lists in this post of computers and controllers that operate successfully and non-successfully with this game. Also, if you have any improvements to these steps or things that could helpful to add to this guide, then by all means drop in in the comments of this blog, email me, tweet me on Twitter, send a carrier pigeon, I don't care!

I hope this helped and if it did, consider checking out the some of my other blog posts and other content and share it if you'd like. Finally, thanks to some of the people from the Super Meat Boy blog Mac post; some of you gave some random hints that I used in the post and it gave me the inspiration in the first place to make this.

Have a meat-tastic day,

 - Aidan

P.S. - I know there are some weird formatting issues. I just wanted this to be formatted in a specific way and for that to happen, I had to do some unorthodox formatting. So just ignore it please!

1 comment:

  1. It says when I open the .command file "The file “SuperMeatBoy Launcher.command” could not be executed because you do not have appropriate access privileges." What do I do? Please help!