One of the things I love about PICO-8 is the flexibility of input devices; I love that a keyboard is just emulating a virtual controller that has only 4 directional buttons and two other buttons, and that I can use any controller I want (thanks largely to SDL2). That combined with the cross-platformness makes the whole thing feel very inclusive and welcoming.
However, this presents a problem for in-game button prompts or manual text: what should the buttons be called? The directional buttons are pretty standard, but it's the other two buttons that present the biggest issue.
Depending on the input device, the two non-directional buttons could be called lots of different things:
|Keyboard||Z/X or N/M|
|Xbox 360 controller||A/B|
Obviously it's not a huge deal to translate in your head or just figure it out with trial and error (since it's only two buttons) but it just seems like there could be a better naming convention that doesn't give implicit priority to keyboard (and a specific layout at that), and I hadn't heard anyone bring up this issue already, so I thought it might be something worth discussing.
Perhaps a name like "primary button" and "secondary button" might work? I'm curious to hear others' thoughts. (zep, I imagine this may be something you have thought about at some point?)
I've actually been drawing up concept gamepads. (its still a bit too low res right now)
Been using Xbox controller colors but I like the idea of calling the buttons by their keyboard counterpart.
Say we manage to make a home made game pad with 3D printing and wire it up as a USB keyboard with limited keys.
Maybe set up the gamepads with a switch that changes them from player one and two and put down Z/Shift X/A labal over the buttons perhaps.
That way its easy to remember which keyboard button it refers to when programing custom gamepads. (Gamepad to Key programing on PC too)
Though even then I'd probably just label the buttons by number like the Sega Master System had.
Pico-8 reminds me a lot of the Sega Mark and Sega Master Systems so I find the same styles to fit a little.
"Primary" and "secondary" buttons sounds too boring, we need something more rad, like "Action" and ... erm... "Action 2"? :)
So the short names would be P1A1, P1A2 and P2A1 and P2A2.
Hmm, the numbering is not very eleant, we would need an another word with a different first letter... "Jump", "Bonus", "Back", "Kick" all sound to specific... What are the synonims of "Action"? (I'm sorry I'm not a native English speaker, I don't know any :) )
Maybe "Act" and "Do" buttons? :)
P1A, P1D and P2A and P2D...
I like how "action" sounds. So "Action 1" and "Action 2", or "Primary Action" and "Secondary Action", or "action button" and "other action button"...
It's not clear to me either how best to distinguish the two, but I think the basic categorical distinction between the two "action" buttons and the four "directional" buttons is helpful at least.
I just used this terminology distinction in my post for my Video Poker game, so maybe it will catch on :D
Speaking about input. Why is it E,D,S,F instead of W,S,A,D for player 2?
Also, when naming buttons, I'm actually using player 2's input allocation for input for player one. So I wouldn't name them with a player tag.
I'm considering the input like this
Left stick - up, down, left, right
Right stick - up, down, left, right
Action 1, Action 2, Action 3, Action 4
The A / B naming, even though it's seems natural because of the NES / SNES / XBOX controllers, is confusing for the "keyboard" players.
I would simply name the buttons B1 and B2 as these are short and they cannot be confused with the A / B keys on the keyboard.
Old discussion, I know, but this is the closest that popped up when searching for which button is supposed to be primary in case PICO-8 controllers are ever made. Different games seem to have different opinions on primary button (Z or X) and the docs aren't clear.
As to the original discussion above regarding names, print("\142\151") establishes the buttons as O and X. Hard to argue with that.
Given that X is the Yes button and O is the No button on the PS (think binary: 1 and 0), I'm assuming X is meant to be the primary button on PICO-8 as well. But is X=Z or X=X? That is, is button X = key Z, or button X = key X? I can't answer that. I assume X=X (for a few reasons, not just prettiness) but that would also mean most of the games I've seen here so far may have it backwards due to assumptions on the left-handedness of the keyboard mappings.
As to why player 2 uses ESDF for nav instead of WASD, I can only assume it is to make room for buttons to the left. Personally, I prefer ESDF regardless due the bump on the F.
If you run the keyconfig, x=x and z=o
edit: and yes, games have been all over the map. (I imagine c/v being alternates hasn't helped people who attempt to intuit what buttons are what and wind up on x/c)
Hopefully the paradigm/presentation of the virtual console will be emphasized more strongly as pico-8 matures out of beta status.
Ah, thanks. I hadn't played with keyconfig yet. Although, given the image there, I'm not entirely sure it clears up which button is primary. It transposes the position of X and O from the PS controller. Yet, the 30-degree orientation is more like the Game Boy (where the rightmost button is primary) rather than the 45-degree diamond of the PS (where the bottom button is primary). I suppose both of these together point to the X being primary, so that is what I'm going with until something more proves otherwise.
Fun fact, the use of O and X on the playstation is different in the west vs Japan.
The highlighted post here explains why: https://www.reddit.com/r/Games/comments/1f3ron/why_is_o_yes_an_x_no_in_japanese_playstation/ca6io5l/
Given PICO is produced in Japan, I would say it was intended to follow the same conventions.
(O) defaults on 'z' and is polled through btn(4),
(X) defaults on 'x' and is polled through btn(5),
I guess in itself it's enough to call (O) primary.
also (O)/(X) are mapped respectively to (A)/(B) on a xbox controller and to... (X)/(O) on a dualshock.
not sure that's what you mean, but pico8's (O) is mapped to SDL_CONTROLLER_BUTTON_A, which sdl defaults to the bottom action button, which happens to be (X) on a dualshock.
imho calling those buttons (1) and (2) would have saved a lot of headaches.
Please note that I made this thread a long time ago, before the buttons had been given official names. This thread is obsolete now, since they do have official names: O and X.
I do however agree that there really needs to be a standard "primary" button because otherwise it is a confusing experience and there is no intuitive sense from cart to cart of what the expectations are. The design of PICO-8 seems to imply that O is primary, for reasons others have stated (default SDL2 gamepad API mapping, coming first in btn() numbers), and also because of Japanese culture, where O kind of means "yes" and X means "no", I'm told. But a lot of people have assumed, probably because of American PlayStation conventions, that X is primary. Because so many people seem to be confused, I would love the PICO-8 documentation to make a more explicit recommendation as to controller conventions. (I think I may have already said this on other thread(s))
And, yet, the similarities between what is seen in KEYCONFIG and Nintendo controllers is obvious -- especially to the Game Boy. With X in position of GB's button A, it seems to me (in my opinion) the developer's intent is for X as primary, regardless of country of origin.
On the other hand, I find the reasons for assuming O as primary, valid as well. Maybe KEYCONFIG wasn't drawn well according to intent. btn() numbering is somewhat persuasive but not very. Likewise with glyph number. I haven't looked at any SDL button mappings yet but those would be subjective to whoever wrote them -- which come from SDL, apparently, and not PICO-8. sdl_controllers.txt comes empty, so no hints there as to what the developer might be using or thinking.
I'm with @ultrabrite, naming them 1 and 2 (or A and B) would have saved headaches given the lack of clear design standards. Then, at least the developer knows what to do regardless of how SDL mappings work out for various controllers (which, by the sound of it here, may be more position biased than label biased). Really, though, we need better docs (as @kittenm4ster just said) and support (as I've said elsewhere on some very old and painful bugs).
lol sorry about your computer; I think you figured it out though ;)
Actually the SDL2 thing is defined by PICO-8. PICO-8 responds to the A button by acting as if O was pushed.The SDL2 gamepad API is based on the Xbox 360 controller, where A is the primary button.
anyway it seems silly to guess when zep is not dead or missing or a mysterious unknown corporation or anything, so he could just interject if he wanted to... but maybe it's like an ARG puzzle that we are supposed to figure out... :O
There doesn't seem to be a way to lock a thread on here, so I will state it plainly: please stop commenting on this thread. It is very old and obsolete now. The buttons have been given official names. There is no more need to discuss this.
Have a nice day :)
[Please log in to post a comment]