Sponsored By

Making of Super Mega Baseball No.13 - The Darkness

It was the darkest time during the making of Super Mega Baseball. Lua, PhyreEngine, re-doing work - it's all discussed in this post.

Liane Howill, Blogger

November 18, 2015

13 Min Read

This is the 13th post in a series about the making of Super Mega Baseball, it was copied over from our blog.


To recap where we are in the story: it's 2013 and the guys have not been successful at getting government funding, they ran into major technical issues on their first console test, they spent three intense months building in some actual gameplay, and then showed the game to strangers for the first time at PAX East. The only way to go from here is up, right? 


Liane: What did you guys do after PAX East?

Scott: It was actually pretty bittersweet at that point cause we were kind of running into the realization that with our newfound motivation, money was running super short. So, it came down to the fact that we still weren’t in a good position to be raising any money. And we had the same problem as before. So we had to take on some contract work and actually ended up doing a contract job with Tobyn. So Super Mega Baseball slowed down big time, while there was some other stuff going on to keep some money coming in.

Christian: I think we mentioned two posts ago that before we decided to go to PAX, we had already identified that the kind of technology we had wasn’t going to work on consoles. And it was time to switch. So we went to PAX, did that, and now we actually had to make something that was going to run on PlayStation consoles. And so we actually started the switch to PhyreEngine. Which was very much like starting from scratch in a lot of ways. You don’t necessarily start from zero, it’s more like you solve the problem one way and now you’re solving the same problem again in a slightly different way. So you’re not starting from zero, but it’s still a ton of work.

Scott: You start with something that’s working and then you do a whole bunch more work just so that it’s working exactly as it did before.

Christian: Basically, yeah. So the first thing I needed to do was just to get anything drawing on the PlayStation. So this is where the banana screenshot comes in...we basically went from having a fully working game to having a banana draw on the screen.

This is a simple banana asset, the first thing Christian got running on the PS3:


...compared to this, which is what they had before switching to PhyreEngine:



Christian: Now we were well aware this was going to take a long time. Which is why I didn’t want to do it in the first place. So I think the first thing that got done was just trying to make our UI system draw on the new renderer. And that went really well. That didn’t take very long. And I think the next thing that happened was we were using this scripting language called Lua...

Scott: Which the whole game was written in basically, like all of the baseball and gameplay. Pretty much the whole game, right?

Christian: Yeah, all the game logic was written in Lua, and not very isolated chunks of Lua either. It was like one giant brick of Lua world that had to run. And there’s lots of problems with that. It took up huge amounts of memory, it was really slow. This was definitely not going to fly on a PlayStation 3. So I spent quite a bit of time trying to figure out if there’s any way to make this work. And eventually I think we came to the conclusion that this just wasn’t going to work, it just wasn’t worth it.

Scott: We were gonna have to bite the bullet.

Christian: Don’t get me wrong. I mean, I don’t even really remember why we started using Lua, we just thought it was a good idea because that’s what game companies do.

Scott: Or at least that’s what we thought a lot of them did, based on our reading.

Christian: Yeah, but it turns out that wasn’t really a proper fit for us. We switched away from that, which was going to cause a huge amount of work in addition to all the work we already had. And then I think the next thing we did was try to make the stadiums draw again. And I mean, the entire technology stack, every step along the way, had to change just so we could actually draw stuff again on the screen. And it was even worse for the characters because, I mean, the stadiums are at least, for the most part, static. And we actually had a lot of them drawing pretty quickly. It wasn’t so bad. Whereas the characters, they’re fully animated, and the entire animation system needed porting, and the animation exporting was really, really awful. It was many months of work into just making all of the animation work again, how it worked before. On the upside it was really, really fast afterward, unlike before. But it was really, really awful. Really, really awful. And a lot of really nasty math that was not going right. And then the characters themselves, just piece by piece assembling them and every little feature has to be re-added again. I think at some point earlier in one of the posts we talked about how much work goes into like every tiny bit that you see in the game. And the really astute reader will notice that one of the things that just never got ported was the drawing of character names on the back of their jerseys. So they used to have numbers and names, and that’s just one of the many, many pieces that make up the character - and that piece was just never important enough to get done before we released. So it was technically working in our PAX version, but not our final version. It was piece by piece kind of putting the game back together.


Scott: And we had an interesting thing going for that period of time. Because we decided to take all this Lua scripting code and turn it into native C++ code, but we were also fighting the fact that we knew we had to keep the gameplay moving forward. So while a lot of this early porting was happening, we were still working on gameplay in Lua. So we were writing Lua code, new Lua code in order to introduce new gameplay features, while knowing that this is all eventually going to be converted to a completely different programming language that runs on a completely different platform. So we’re doing this all at the same time. And we’re doing a bunch of contract work at the same time. It was the ultimate treadmill, we’re running so hard but just not feeling like we're getting anywhere. It was brutal. And that’s I guess why the name of this post is “The Darkness.”

Christian: We knew that we were at least making progress on a platform that we could ultimately sell this thing on, which was nice. It felt to me like we were moving closer to a sellable product from what we ever had. But it was awful because we were just doing the same stuff over and over again.

Scott: The rate that the product was becoming more fun, as a game, was very close to zero, for this whole period of time.

Christian: And it lasted a long, long, long time. It took forever.

Scott: Grind grind grind grind grind.


Liane: What was wrong with Lua?

Christian: I mean, I think that Lua has a place in game development. But it doesn’t have the place that we tried to make for it. We tried to use it as a general purpose programming language and write the entire game in Lua. Which was awful. Why was it awful? Because the tools for it are just not very good. We were basically two people with a software background, so using the technology that we already knew, C++, just wasn't a problem. We didn’t need the complexity of having this other thing added as well.

Scott: And one specific brutal thing about that complexity was that you’ve got a native engine, or the core engine stuff is written in C++, and you’re writing your gameplay in Lua. So whenever you’re debugging, now you’re having to debug both your Lua code and what’s going on in the native code underneath that Lua code. And also dealing with the fact that like, there’s only two of us using this, we didn’t have a well-established engine yet. We didn’t know what the requirements were for our engine. So, not only is the Lua code changing rapidly, but all the native code underneath it was also changing rapidly. So we ended up, you know, repeatedly having to change both the Lua code and the native code at the same time… making architectural changes was an absolute nightmare.

Christian:  The thing is, the benefits that you’re supposed to get from a scripting language like this are very rapid iteration times...basically you can make a change and see it in the game really quickly. And that it allows non-technical people, or less-technical people, to make changes to the game. But we didn’t have that. The only people working at the company were highly technical people anyway. Even then I’m unconvinced that it makes a lot of sense, cause all you have to do if you have non-technical people making changes is make sure that they can’t cause any damage either. Which means that you have to very carefully wall off what they can do, to the point where they can’t really do a whole lot anyway, or you let them do everything and you’re gonna have a problem introduced by it. So like, I’m just very unconvinced of the entire system. I mean, we spent I don’t know how many months in total just on the Lua technology itself, a huge amount of time just working in Lua, wasting time because the technology stack wasn’t very good, and we were converting away from it. So, I think it was overall and abject failure.

Scott: The decision to try to use Lua to make this game probably cost us 6 months, or more, in total.

Christian: Or more. I would say more.

Scott: Out of our total development cycle.

Christian: Yup, had we just stuck with C++ it would have gone incredibly faster.

Scott: And that’s not a dis of Lua, that’s a dis of us trying to fit Lua into our situation.

Christian: Into what we were trying to do. Yeah I understand that it works well for big companies where you do have a lot of people that fall into the, not necessarily programmer realm, but who make gameplay, and you have the resources to maintain this stuff. But when there’s two of you, this makes no sense. Like, I think you have to be much bigger than two before this starts making sense, you have to have a hundred people before this starts making sense.


Liane: What was next?

Scott: This whole phase of just desperately trying to get everything to work actually lasted well into early 2014. But toward the end of 2013 we actually ended up having our first proper full-time team member join up. His name’s Mike, and we knew him very well prior, so that’s what the next post is going to be about.


Still with us? It's true, times were tough in this era of SMB. But I assure you, this is the low point in the story. Things start ramping up from here on.



This post was copied over from our blog.

Read more about:


About the Author(s)

Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like