It’s been a while since we’ve posted one of these, but we had a lot of fun working on Sora and making it look good on modern systems, so we decided to give a little blurb on the technical changes we’ve made to Sora during the localization. Without further ado I’ll give to floor to Tony, the man behind the code.
Tony: I had only played Sora briefly in our meeting with Orange Juice in May 2015, but when I actually got to spend more time with the game, it really clicked; the fast gameplay, setting, soundtrack and presentation were amazing. I was also aware of the fans’ wishes for a new release of Sora, and felt it very important to do a good job with our localized version.
When we start localizing a new game, we evaluate its customization options such as screen settings and discuss what technical improvements we could add to make it more enjoyable for the players. Basically we ask ourselves “What would I like to see in this as a gamer?” and then check how feasible it would be to add it. Sometimes the engine the game runs on makes this impossible, but usually we’re able to add fancy things like higher resolution support.
The first thing we wanted to improve with Sora was the game’s resolution. The original version of Sora runs at 640×480 resolution which feels rather small in modern HD era. Since the base resolution was so low, simply adding resolution options to upscale the graphics to a higher resolution would leave the screen looking blurry and pixelated. I had some concerns about changing the rendering resolution because in shooting games every single element’s positioning is very important, but there’s no harm in trying, right? I set up the necessary changes to launch the game in 720p as an experiment and we got this:
First higher res shot of Sora running at 720p (16:9 aspect ratio). Notice how the action is centered on the screen because the game area is supposed to be 4:3!
The first tests revealed that the essentials were already in place thanks to Orange Juice’s smart coding, but there was still a lot of work ahead. The view was too far, allowing the player to see more of the game area than they were supposed to, leading to problems like enemies appearing out of thin air. Some of the backgrounds and effects were broken, some boss positions were off, and of course all 2D elements were still happily in the 640×480 land.
Yet even with all the chaotic results, we could see that the game’s visuals got a noticeable improvement from the resolution increase. We went through the graphics assets we were given and found that many images had more detail than the original game resolution could show. Our graphics guys Ozhan and Yulay were on board for creating high-res versions of the menu elements. After some gameplay / image comparisons our minds were set.
As a side mention, we experimented with making Sora’s gameplay fully widescreen while deciding on the new target resolution. We had a lot of fun with it and even had some back and forth with OrangeJuice, sending different builds! However, it was clear from the onset that it would break the game too much. Let’s put aside the stage 1 opening cutscene continuing forever because the missiles never hit their target, and ignore enemies popping out of thin air, how about being able to move behind bosses like Nath and getting some free shots while she’s stuck firing at nothing? The amount of undesired behavior the change would generate was overwhelming.
I’m over here!
We decided to set the resolution to 1280×960 which doubles the original dimensions, the main reason being that beyond that even the higher resolution graphics wouldn’t benefit much. While our previous attempts at full widescreen were doomed, we were able to add support for widescreen menus and cutscenes specifically. As an added bonus, since the fight against extra stage’s last boss is in a special type of area, we added widescreen support for that too!
Jakke: After upgrading the resolution everywhere else, we were left with the game’s opening (at 640×480 resolution) looking strongly pixelated, not to mention all the Japanese text in it. Unsurprisingly, the original project files for the opening were gone from existence. Luckily, we received most of the original graphics used in the opening, and pieced them together with newly recorded gameplay footage to recreate the opening identically at a 1280×960 resolution with English texts. Our friends at Interweave Productions pulled some miracles with the video.
Tony: We also changed the texture format. Sora uses a Japanese engine called Luna3D, which is also used by our earlier title 100% Orange Juice. The engine handles a lot of things well, but its texture handling has problems. There’s an issue with texture drawing that causes all textures to appear blurrier and the engine’s own texture format is somewhat slow and also takes up a lot of space. We changed 100% Orange Juice’s texture format some months ago and brought these changes to Sora as well. As result, our version should have faster load times despite having bigger images and the required hard drive space for textures is down to less than 100mb instead of the original’s 1gb.
As for input, the original game only supported DirectInput controllers, but similarly to what we did with QP Shooting – Dangerous!!, we added XInput support to support all types of controllers, as well as added keyboard bind options. Thanks to some helpful feedback from our testers / reviewers, we also added visible keybinds in the tutorial to help new players.
We had a lot of fun with making the achievements. When we started Sora, we were terrible at the game. Back in Japan, I couldn’t even get past the first stage! However as we kept playing we got gradually better and many “How am I supposed to beat this?” fights turned into satisfying victories. We think the game does a very good job at that and that’s why we had no qualms with making the achievements challenging.
Jakke: It took me well over 20 hours to clear the original Japanese version of Sora on easy difficulty. While playing and testing the game, gradually feats that had first seemed impossible, turned possible, then probable, and ultimately felt only fair. I’m not great at shooters myself, so I largely used myself as a guideline for deciding on the achievements – if I can do this, most people can be reasonably expected to be able to. My personal favorite is ‘Dance Like a Flower’, which drove me to near madness before I finally cleared it (with controller burns on my thumb).
Finally, go ahead and enjoy these screenshots of things gone horribly wrong during development!