Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Player Manager #87

Open
garbear opened this issue Dec 7, 2017 · 15 comments
Open

Player Manager #87

garbear opened this issue Dec 7, 2017 · 15 comments
Milestone

Comments

@garbear
Copy link
Owner

garbear commented Dec 7, 2017

Player Manager design requirements

Early screenshot:

SNES 5 players

Hypothetical example of depth-first player assignment:

hubs

Discussion: https://forum.kodi.tv/showthread.php?tid=295463&pid=2676758#pid2676758

Datasets:

Avatar add-on:

Controller add-ons:

Controller feature support:

Topology support

New skin controls:

  • Player panel (<control type="playerpanel">)
    • Skin XML
    • Deserialize to C++
  • Controller panel (control type="controllerpanel">)
    • Skin XML
    • Deserialize to C++

Controller panel:

  • Topology tree to grid conversion (announcement)
  • Game API support
  • Player manager
  • Controller topology listprovider
  • Dimensions resize to fit controller topology
  • Y-alignment (top, bottom)

Avatar panel:

  • Player numbers
  • Animations (idle, move, fall)
  • Snap-to-grid

Common properties:

  • Navigation between panels follows motion

Menus:

Avatar menu:

  • Change player (fades focus texture, avatar follows focus as it moves across players)
  • View profile
  • Choose profile
  • Assign controller
  • Controller settings

Controller menu:

  • Map device (opens controller dialog for this controller)
  • Choose device (if port can use multiple devices or models)
  • View info (opens add-on info)

New dialogs:

  • Player profile info
  • Player profile selection dialog
  • Assign controller dialog
  • Peripherals dialog with player's peripherals
  • Controller profile selection dialog

Player profile info dialog:

  • Profile picture with button to change it
  • Button to rename profile
  • Saved games widget
  • Achievements (someday)
  • Attached controllers widget

Emulator integration:

@garbear
Copy link
Owner Author

garbear commented Jan 11, 2022

Updated with an experimental mockup

Player manager

@garbear
Copy link
Owner Author

garbear commented Jan 13, 2022

Another render:

Screenshot from 2022-01-12 19-35-25

@garbear
Copy link
Owner Author

garbear commented Jan 17, 2022

Next round of screenshots:

I fired up a Sega Saturn game, which defaults to two controllers:

Saturn 2 players

I clicked on the Ports item to open the Port Setup dialog:

Saturn port setup

I selected the 6 player multitaps for both ports:

Saturn 6 player adapter

After that, 12 players appeared in the list. Here's the top of the list:

Saturn 12 players top

And here's the bottom of the list:

Saturn 12 players buttom

@garbear
Copy link
Owner Author

garbear commented Jan 29, 2022

Experimenting with DOSBox:

DOSBox peripheral list

@garbear
Copy link
Owner Author

garbear commented Jan 29, 2022

Some Amstrad screenies:

Amstrad ports

Amstrad players

@garbear garbear closed this as completed Jan 29, 2022
@garbear garbear reopened this Jan 29, 2022
@garbear
Copy link
Owner Author

garbear commented Jan 30, 2022

Some more screenshots:

Configured Saturn with two 6-player multitaps. Connected four Xbox controllers:

Saturn 12 ports

Changed multitaps back to two Saturn controllers:

Saturn 2 ports

@garbear
Copy link
Owner Author

garbear commented Feb 3, 2022

Idea for player login:

Add a player

@garbear
Copy link
Owner Author

garbear commented Feb 7, 2022

Idea for identity provider add-ons:

Select Identity Provider

@garbear
Copy link
Owner Author

garbear commented Feb 15, 2022

Added a Local Keystore identity provider:

Screenshot from 2022-02-10 17-40-08

@garbear
Copy link
Owner Author

garbear commented Feb 25, 2023

I've upstreamed a small bit of progress: xbmc#22856

Player icons now appear as the physical controller held by the player.

screenshot00001

@garbear
Copy link
Owner Author

garbear commented Jul 6, 2023

I fixed a bug introduced in v20: xbmc#23482

In order to test, I've created a stripped-down version of the Player Manager that I call "View Players", which gives you a read-only view of the players. You can change the ports via the "Ports" item and the players will update in real time.

Here's the item in the in-game OSD:

screenshot00014

It opens a window that shows the player map:

screenshot00011

Selecting "Ports" opens the Port Dialog to let you configure the ports:

screenshot00019

For example, then the Multitap is replaced with a SNES controller, the "View Players" window is updated like this:

screenshot00015

@garbear
Copy link
Owner Author

garbear commented Jul 20, 2023

Update on the Player Manager. I think I figured out how it will work. I added a row for "Players" that shows their avatar, along with the virtual port that they're assigned to:

screenshot00002

Pressing left/right on the controller in this window will reassign the controller to a different virtual port/avatar, but the player will stay constant. You can also select a controller in the controllers list, and map it to multiple virtual ports/avatars (e.g. a single keyboard can control multiple virtual ports).

The vertical column can be seen as each player's "buttonmap". The vertical column can contain multiple (maybe partially-mapped) controllers. And controllers can be mapped to multiple virtual ports/avatars. This way, we have many-to-many controller mapping.

Clicking on the "Player" row lets you configure players individually and remap them to different virtual ports:

screenshot00004

Pressing left/right in the player list will reassign your player account to a different virtual port. When you return to the main window, your "buttonmap" will have travelled left/right with your avatar.

@garbear
Copy link
Owner Author

garbear commented Aug 19, 2023

I'm getting closer to tunneling between Kodi and a mobile browser using QR and BitTorrent.

I'm having trouble generating the QR code, but it renders just fine:

screenshot00000

Kodi can now pull metadata directly from the BitTorrent DHT using libtorrent. I added the following as a video source:

magnet:?xt=urn:btih:dd8255ecdc7ca55fb0bbf81323d87062db1f6d1c&dn=Big%20Buck%20Bunny

Within a couple seconds you can browse the torrent's files:

screenshot00003

@garbear
Copy link
Owner Author

garbear commented Jan 2, 2024

I've upstreamed Nearest Neighbor filtering: xbmc#24395

In addition to using it for QR codes, I'm rendering 8-bit avatars (16x16 pixels) and upscaling them using NN. Here's the original avatar:

Green Hero

And here's what it looks like with NN upscaling:

Nearest neighbor avatars

The Avatars are packaged as a Game Resource add-on (https://github.com/kodi-game/resource.avatar.opengameart):

screenshot00000

@garbear
Copy link
Owner Author

garbear commented Jan 17, 2024

The Player Manager now has full keyboard and mouse access: xbmc#24524

screenshot00007

screenshot00009

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant