smcameron / space-nerds-in-space

Multi-player spaceship bridge simulator game. Captain your starship through adventures with your friends. See https://smcameron.github.io/space-nerds-in-space
GNU General Public License v2.0
724 stars 73 forks source link

keymap & UI/UX: Science! #342

Open heaventwig opened 9 months ago

heaventwig commented 9 months ago

Science has most of its interface commands available as keybindings. I've found one extant interface element so far that isn't listed in the snis_keyboard.c file, and a pair that are listed but which don't seem to do anything:

The other UI modifications that occur to me for the science station are slightly more in the UX world. Scan direction, scan contact selection cycling, scan depth/layers/detail refinement, and moving the LRS display ball.

I didn't figure out until just now that there's an adjustment available for the direction of the scan, which is super cool. Not sure how else to indicate that for newbies, besides help (where you have it already) and on the screen (already indicated with the white interface element, now quite obvious to my eye). I do wish I could push one button to make the scanner focus on my selected scanner contact (which presupposes the ability to click/select scan contacts that I haven't yet scanned, also a thing I've wished for often; see my further notes below for more on this concept).

For scan-contact selection, I find myself wishing for the ability to cycle through scanning targets, like I do in other spaceship bridge simulators -- for example, if keys y, u, and i defaulted to selecting my closest possible scannable contact, my next further such contact, and my previous closer scanner target, cycling around from nearest to furthest and vice versa, that would make it possible (if time-consuming) to eventually cycle through all the scanner contacts in the system. I could also imagine saving a specific contact to a specific key, so that if I hit (say) ctrl-1 while I have a specific target selected, I can hit 1 later to select it again.

Once a contact is selected, as currently implemented, the science station seems to fairly immediately have phenomenal volumes of (phenomenally detailed and accurate) information about the object I'm scanning. Seems to me like it could be fun for that to be different, and changing it would make the whole "select whatever you like" thing work a bit better (that is, not just immediately win the science game). Here are a few ideas about ways to approach this:

I've also wished I could move the focus of the sciball - not just zoom in/out and adjust pitch, yaw, and roll, but drag my camera through the sky. I'd add a second position triad on the screen, just below the existing one, labeled camera, and a return-to-ship button. I would expect the scanning to continue to be centered on the ship, operating as normal, but I could then zoom in on the action near a specific starbase, say, or drop a waypoint somewhere (based on somethin I heard from comms) and zoom in there. Select something (or keep my selection on that starbase, waypoint, or whatever), and hit the "focus scan" button to aim my scanning dish at that area. Again, this needn't give me immediate information on all the things I've zoomed in on; the positional fuzz described for successive depth of scan might apply in this distant region of space as well, making it harder to see what the heck is on the screen even. But that's fine, just hold us steady here a moment cap'n, helm, and I'll tell you if I can find that pirate you're lookin for. (And if we have the triad of nearest-next-prev keys as described above for contact-selection, maybe that's actually based on camera position, so that if I move the camera and hit the "nearest" button my system asks the server for whatever is closest to that spot and - if we have the fuzzy-scan concept in play - the server returns something at random from amidst the local fuzz wherever I've put my camera. More likely a planet or starbase than an escape pod or an asteroid.)

smcameron commented 9 months ago

Well, you're not shy about asking for stuff, heh.

Bear in mind, when you put a lot of stuff in one issue like this, it's easy for pieces to fall off the table and get ignored/forgotten. But it's fine.

obfuscate the position of an object

To some extent, this is done already, (that's what the fuzzy balls of static you see are before you focus your beam on objects are doing.) You also have to ask about features like this, does it make the game more fun? Or is it just frustrating? I'm trying to remember but I think we experimented with this a bit 10 years ago and found that it was just frustrating. Maybe it's time to experiment in this area some more, but I'd be inclined to make it user-tunable if I added something like this.

never have full information about both position and velocity!

How does not having this info make the game more fun? How does having it make it less fun? How do you even know that what is presented onscreen today is accurate? (It is, but if it weren't, you wouldn't have known that.) So, if I made this information less accurate (i.e. mostly accurate, but off a bit), nobody would even notice, so why do that work? If I did make it so inaccurate as to be noticeable, this information would be rendered useless. It's almost useless anyway even though it's accurate. The main use of this information is to enable role-playing, so the science officer can say, "Captain, the vessel is fleeing at such and such velocity." and the like. As for the physics, we don't know those values to such a precision that Heisenberg's uncertainty principle would come into play.

I'm not going to address all your other suggestions in this issue individually right now, but I'll come back and consider them later.

possibility of future third-party client development

Ha, sure, that'll happen. You're very optimistic.

heaventwig commented 9 months ago

I'm not going to address all your other suggestions in this issue individually right now, but I'll come back and consider them later.

Would it help for me to factor them out into separate logical chunks?

The answer to this seems like pretty obviously yes; I guess my question is more "would it get in the way of your fun here, or make anything harder for you, to have these as separate submissions? Am I right in thinking it would more likely help?"

But I wanted to check before flooding the issue submission queue and calling this one a duplicate.

heaventwig commented 9 months ago

... fuzzy balls of static ... You also have to ask about features like this, does it make the game more fun? Or is it just frustrating?

My writeup here was an attempt to address a thing that I've found frustrating with the snis science station, and seen others find frustrating as well: the fuzzy balls of static, and the inability to select anything within them. I figured there was important design intent behind them (my assumption is that it's about modeling the lack of local information about distant objects, plus the vibes of it all), so I was looking for a way to add some functionality to the science station (allow science to select things to scan within the distant undifferentiated clouds) while retaining that. I added some ideas about how the underlying code might work because I tend to think in those terms (how would I do this) before suggesting a thing.

But maybe it's worth checking my assumption: is it important to you that science not be able to differentiate distant stuff that's either outside scanner range or not been scanned recently?