bring fast and reliable online play to Super Smash Bros. Melee.
I’m sure you’ve noticed by now that our posts have been getting less and less frequent. As explained in our last post, this is mostly because we have little new to announce.
While SSBMO is still being worked on, it’s become more of a secondary project and is no longer a main focus in the lives of Massive and myself. Alongside SSBMO, I work on Project M, FrankerFaceZ, and a fourth major project which I am not yet ready to announce. That said, I think that SSBMO will simply take too long to make with just one person (me) on the front-end UI and implementation. On top of this, we have scrapped so much work over the years (usually out of necessity) that there’s still a lot to be done before the initial beta is finished.
But this isn’t Duke Nukem Forever. We’re confident that we will indeed get this released, and it will be a quality application. I’m just asking for a helping hand or two. At the moment, most of our work is being done in C# using .NET and WPF. We’ll also likely soon be working with PHP and databases for the user account implementation. If you are experienced in these and are willing to help out, then please contact me.
Here’s my Twitter account: dansalvato1
Or Skype: dansalvato
Or, you can email me at ie6smash at gmail.
Hope to be working with some cool people in the future!
Alright, so I have people asking me all the time what’s been going on with SSBMO, so to save myself the trouble of explaining on an individual basis I’ll just write a post about it!
We haven’t posted in so long because we have nothing new to show you guys. No, that doesn’t mean development has come to a halt. Rather, we don’t want to really hype people up without anything to show for it. However, people are starting to get cranky so the least I could do is talk a little bit about where we are!
Our most major hurdle in the past months has been unreliable Dolphin netplay. We’re not writing our net code from scratch, but we’re instead relying on Dolphin’s netplay as a core and adding to that as we see fit for Melee. However, in the extensive testing we’ve run both on a LAN and in long distance, we simply couldn’t get consistent results. I could get a good 5 matches with someone living halfway across the globe, but then connecting to Massive (East Coast to Midwest) would give me a desync within seconds, literally. There is a pretty popular Melee Netplay thread on Smashboards with a small community around it, and in there are recommendations on maximizing the netplay experience. However, we really couldn’t continue developing the core of SSBMO until netplay proved 99.9% reliability to us, or at least if we could find a way to improve netplay ourselves.
Today, Dolphin’s netplay is more stable than ever! Through both an improved Dolphin and our own code to help prevent desyncs, we’ve had wonderful results in a LAN environment, and we just need to do some long-distance testing before we feel all but confident. In the meantime, I’ve been working here and there on our front-end client, which the player will use to chat and find matches, configure options, and edit their profile and character preferences.
Yes, players will have profiles! Here you will be able to fill out some player info, view game stats, and set some basic gameplay preferences such as your shield color. (Yes, really.) This information will be connected and stored to an online account. More on this to come. Aside from that, we plan to use our own character/stage selection screens. So, after selecting your character and stage through the SSBMO front-end menu, we will automatically load Dolphin, connect to netplay, and start the game. Moreover, Melee will boot directly into the match. This means there are absolutely zero inputs between pressing “Start” in SSBMO and busting some moves on the battlefield.
That’s just about everything I have to share with you right now. My goal isn’t to prematurely hype everyone but rather to just let everyone know that we ARE here and we ARE working on this beast. By the way, I’ve shown this off now and then, but here’s a screenshot of the main menu I’m putting together:
Pretty cool, huh? There is a lot of work to do on it, though. You can already see the Final Destination isn’t fully textured yet, and I plan on adding more detail to the starscape, among other changes. I don’t have too much done besides this, except for a rudimentary Lobby interface where you can chat with other players, and a basic Connect screen. That’s a little too “alpha” to show off right now, but I will post updates as I continue to make progress on it!
Glad to bring everyone up to speed. By the way, I wrote a little program called Melee Toolkit that provides an easy way to edit Melee .iso files and replace textures. It’s still alpha, but check it out if you’re into that stuff!
Hope to see you again soon!
Hey guys, it’s been a while.
There have been some pretty significant developments since our last post, actually.
A recent conversation with the Dolphin devs has led me (us) to believe that recent builds of dolphin (3.0 r650+) are now almost completely deterministic for gamecube emulation.
What does that mean? It means that for identical variables gamecube emulation will almost always produce identical events. This was not entirely implemented in Dolphin’s code before and was bleeding over to our net play experience. But as you may imagine, this change is really friggn’ fantastic for our purposes. That means TCP communication is very unlikely to desync, even in dual core mode, assuming some of the determinism ruining culprits are dealt with (HLE audio emulation and idle skipping are main culprits).
You can actually play melee online with recent builds of dolphin now with a few tweaks (I recommend 787), and it works reasonably well (speed issues aside). Some helpful AR codes will be posted a few lines down from here.
As for current development, IE and I are diligently working on a unified match generating system that will remove the need to use the melee menus and speed up the whole process. Additionally the aforementioned HD graphics enhancements are still underway (many of which should be completed relatively soon), as well as custom menus, custom stages, and a slew of other goodies.
Oh yeah, here’s the bulk of our infamous “low end” hack that makes online play with the existing dolphin builds a bit more tolerable.
30 fps mode:
45 fps mode:
To use these, set your frame limit to 30fps or 45fps, enable cheats, and use the appropriate code. These codes control the game’s speed scaling (harnessing the power of lightning melee, hahaha) and will force a game running at these two framerates play at full speed. This is confirmed to work in single and dual core mode, and can allow even slower machines to play the game at full speed. These are, as always, for Melee 1.02.
Also, in Easter egg news, IE has finished some musical tracks for our project to replace a few things whenever our custom menu system presents its beastly visage.
Stay classy, folks!
Introducing: True widescreen support!
Everything works perfectly, from the nametags to the shaders to the side-screen bubbles. I accomplished this by modifying the camera’s FOV (field of view) to encompass 4/3 the angle, and Melee’s coding is basically smart enough to do the rest. INCOMING AR CODE!
Widescreen Support (v1.2)
That’s it! The ONE problem with this code is that it doesn’t fix the HUD stretching. I was working on this, but the HUD seems to be dynamically allocated and I can’t for the life of me find a pointer. So, after some discussion with the beautiful and charming Massive, we decided upon an alternate solution:
Redraw the HUD in high-definition!
Pretty cool, right? We’re doing everything, from the digits to the character emblems to the stock icons. Trust me, it’s going to look absolutely stunning in HD. Stay tuned!
Sorry about the downtime! I was using this server as a mirror for Project M, and I got so many downloads I ran out of bandwidth, haha. I’ll be more careful about that in the future.
Anyway, while Massive is still working hard at network features, I’m working on some bonus features that we’ll want to have done by release. One of those is widescreen support.
SO GLITCHY! This is happening because when Melee draws some of the overlay graphics, including full-screen shaders and nametags, it expects the game to be 640 pixels wide. The nametags, as you can see, reach too far left and right since they get stretched out. The background shader, on the other hand, stays the same size and doesn’t consider the new added regions of the screen. We got two separate problems going on here.
To tackle the nametag issue, I needed to figure out where in Melee’s code the nametags were drawn, and what calculations it used for horizontal position. It starts off by taking the character’s horizontal position value. Then, it looks at the camera’s bounding box and compares it to the character’s position in order to come up with the character’s exact location on the camera. The final horizontal position is reduced to a value between 0 and 640, because Melee is 640 pixels wide.
What I did was find exactly where in code the value “640″ was loaded into memory, and I changed it to “480″. Why does this work? Going from 4:3 to 16:9 (or, 12:9 to 16:9) means I’m multiplying the number of pixels by 4/3. To reverse this for the nametags, I multiply the position range by 3/4, cancelling out the stretch.
Wait…what’s going on now? For some reason, both nametags appear a certain fixed distance to the left of each character. Well, the explanation is simple. Dolphin adds pixels to both the left and right of the screen, but the nametags are tethered in value to the left of the screen (value 0 = leftmost, value 640 = rightmost). The nametags still don’t understand that there are 80 pixels added to the left of the screen. This pushes the rest of the screen 80 pixels to the right, and we need to do the same to the nametags. How did I get 80? By nametag standards, the screen is currently 480 pixels wide, when our widescreen has increased it to 640 (this is what the nametags see, anyway; doesn’t hold true for the ACTUAL width of the screen). Well, 640 – 480 = 160 added pixels, 80 to each side. So, I take the final nametag position value and add 80 to it before letting the code use it for drawing the nametags.
Hooray! We now have an AR code that correctly positions nametags in widescreen. Now I just need to fix fullscreen shaders, which has so far proven to be somewhat difficult. Once I get that finished, though, I’ll share the AR codes with you guys so you can enjoy Melee in widescreen glory!