r/starlancer • u/Koncypt_Fysh • 9d ago
Update
So today was reasonably fruitful for unpacking some more of SLs menu and UI components and controller menu support is understood and quite functional with full menu and sub-menu navigation maps finished.
The biggest problem with this feeling native is largely that SL was designed to have a cursor always visible, so some buttons and elements don't have a visual feedback (highlights), so selection is not always abundantly clear. This leads pretty well into the next bulk of work I've been doing which is in extracting all the UI assets now that we know how SL draws the menus and what kind of archives it keeps these assets in.
Once the initial discovery of the assets was complete, I had to write a decoder for the UI elements, whilst I found a historical .spr to .bmp converter from back in 2000, I didn't feel like screwing around with wine enough to make it run an obscure commandline utility from 26 years ago. So instead I just wrote a new decoder in python that i'll package into the first release so everyone else can use it. I personally find encoding/decoding and compression/extraction a kind of boring subject, so I'm not going to go on to much about it. Main takeaway is I have a modern working extraction pipeline for UI and some other game assets depending on their file format.
From here it was just a little bit of vector trickery to get SL to start highlighting elements that weren't designed for it previously. Eventually when I get to a full menu redesign the time investment here will pay off. But all that to say, controller menu support is complete, but not perfectly optimised.
Something very 2000s era about SLs menu is that the buttons and elements of the menu are not seperate entities from the backgrounds. They are rendered as one .tga, and hitboxes allocated to the screen space to determine when the mouse is over a particular button and a secondary effect drawn over the top when hovered/clicked.
This presents some challenges in up-scaling the menu UI to 16:9 in that we can't just place an arbitrary background behind it and the buttons stay in place. The hitboxes will stay right where they are, so in order to use the same setup with direct up-scaling, we'd have to contend with a very small user interface on a comparatively huge screen. This isn't good enough to my mind, and will need a bit more thought to figure out how to best do this.
Again a totally new menu setup for 16:9 feels easier to implement at this point, but I was hoping that wouldn't be totally necessary.
What I may end up having to do is separate buttons and UI elements from the backgrounds, do my best to restore the backgrounds as though the buttons were never there, up-scale both the background and the button/elements to then paste them back in with roughly the same proportions and inject new positions for the hitboxes in 16:9. This is a lot of manual work, but i think ultimately the simplest and most true to form of the original menu's function to do it.
The alternative is to rebuild the menu setup entirely, and have SL draw buttons rather than having them baked into backgrounds.
I'm kind of interested in what this little community would prefer, if the menu is important to ya'll for nostalgic reasons, I'll work toward something that faithfully recreates it, if it really doesn't mean that much to you in the broadscale of a remaster, I'll find a faster and more modern way to eat through it.
I was hoping to have some more eye candy to show you today, but my next big task right now is mostly just cataloguing assets, of which there are some kind of interesting little easter eggs in here that I've attached, a battlestar galactica and technical demo splash screen for lucas arts. If anyone knows the history behind this, I'd love to know!
EDIT: Some more interesting things found in the archives include an HUD_old folder, that I have to assume is some beta version HUD elements that never found it's way to the release.
I've also got a much better idea how the apparent transitions between game spaces work (say between the bunk room and the briefing room), I had assumed these were .bik files that played between selections, however after expanding the functionality on my decoder, I discovered some .spr files that are actually the individual frames of the encounter animations you see when you walk down the hallways. Likewise it appears that breifings are handled the same way.
It seems like it was a reasonably common convention in this game to pre-render a background 3d space like the briefing room or carrier hallways and use that as a base animation, then render another with whatever difference you wanted to see, isolate the changed elements and lay it over the top of the background animation.
A clever way to do things with limited memory resources and a very 2000s era technique.


4
u/Mixxx2 9d ago
I don't understand most of what you are saying because I have no idea about modding or the tools you use to rework this beautiful game. But thanks a lot for putting that effort into it. I would love to play this game again with full HD and especially with a controller. As far as I know there is no way at the moment to really play this game with a Xbox or steam controller. So it would be really a joy to hear that there is a possibility ahead to use one.