Aller au contenu

Manette et clavier

Autopilote

Le VPK (v5+) embarque un autopilote (menus → partie) qui se coupe automatiquement à la première action physique du joueur : ne touche à rien et il conduit jusqu'en jeu ; touche n'importe quoi et la main est rendue immédiatement. Il reste actif en continu pour les tests headless.

Contrôles par défaut

Le mapping ci-dessous est ce que remappent controls.txt, les couches R + … / L + … et l'aide aux objets plus bas. Depuis la 0.1.18-beta, le défaut intégré lie l'action aim à L, donc les sticks sont en mode visée. Ce défaut est une bêta, publiée pour recueillir les retours de la communauté. Pour retrouver l'ancien schéma, mettez l=lclick dans controls.txt (sans autre liaison aim) : voir Visée assistée.

Entrée Vita Action Diablo II
Stick gauche Déplacement seul en jeu (n'attaque ni ne ramasse rien) ; hors partie, comportement simple des sticks
Stick droit Curseur libre (visée, menus, panneaux, HUD), sans clic tout seul
Écran tactile Curseur absolu ; tap bref = clic gauche
L (maintenu) Visée assistée en jeu (agit sur la meilleure cible) ; clic gauche simple dans les menus, les panneaux ouverts et hors partie — remappable, voir plus bas (sert aussi de couche combo, voir plus bas)
R (maintenu) Clic droit — remappable, voir plus bas (sert aussi de couche combo, voir plus bas)
Croix R — bascule marche/course
Rond Shift (maintenu) — attaque sur place / cast forcé
Carré (maintenu) Aide aux objets — affiche les objets au sol, les parcourt, les ramasse (square=alt rend l'Alt simple)
Triangle W — échange d'armes
D-pad ↑ / ← / ↓ / → Potions ceinture 1 / 2 / 3 / 4
Start Échap (menu / fermer)
Select Menu radial — remappable, voir plus bas

Croix seule ne clique plus dans les menus : c'est L qui clique.

Remapper L et R ne change jamais leur second rôle : R continue d'armer chaque combo « R + … » ci-dessous, et L sa propre couche « L + … », quelle que soit l'action assignée à l'appui seul.

Couche R (R maintenu + …) et couche L (L maintenu + …)

Combo Action
R + Triangle Clavier virtuel (ouvrir ; fermer avec Select — il s'ouvre aussi de lui-même sur les champs texte, voir plus bas)
R + D-pad F1 / F2 / F3 / F4 — compétences rapides
L + Croix I — inventaire
L + Rond Tab — carte
L + Carré O — inventaire du mercenaire
R + Select Espace — fermer tous les panneaux (fixe, non remappable)
L + Start Capture d'écran (fixe, non remappable)

R + Triangle, R + Select et L + Start l'emportent toujours : ils sont vérifiés avant tout remappage de controls.txt, donc leur assigner autre chose via ce fichier n'a aucun effet (le panneau d'aide à l'écran-titre, voir plus bas, et controls.reference.txt le rappellent tous les deux). Le reste de la couche « R + … » est lié par défaut ; la couche miroir « L + … » démarre avec trois liaisons (inventaire, carte, inventaire du mercenaire) et toutes les autres cases « L + … » restent libres pour controls.txt. Attention : L est aussi le bouton de visée, donc les combos « L + … » déclenchent aussi l'action aim tant que L est enfoncé (comme l=lclick cliquait pendant les combos L auparavant).

Aide aux objets

Sur Carré par défaut (square=items ; square=alt rend l'Alt simple). Assignez l'action items à un autre bouton si vous préférez, et maintenez-la :

  • le jeu affiche les noms des objets au sol, exactement comme avec Alt ;
  • la croix directionnelle saute d'un nom à l'autre (le plus proche dans la direction pressée), et l'objet surligné est celui que le jeu lui-même déclare survolé ;
  • L (le bouton de visée) ou Croix ramasse l'objet surligné — avec aim sur L, maintenez Carré et appuyez sur L, inutile d'aller chercher Croix. Le curseur se place sur le nom, et le clic n'est envoyé qu'une fois que le jeu a signalé l'objet comme survolé : cliquer avant est lu par le jeu comme « aller là-bas » ;
  • sans objet au sol, la croix directionnelle, Croix et L gardent leurs fonctions habituelles (potions, marche/course, visée) : maintenir le bouton ne fait jamais perdre une potion ;
  • le stick droit déplace toujours le curseur à la main — se poser sur un nom le sélectionne ; le stick gauche (déplacement direct) annule tout ramassage en cours.

alt reste disponible comme simple Alt pour qui le préfère. items s'assigne comme n'importe quelle action : boutons de face, croix directionnelle, couches r+/l+, l=, r=, select= (éviter de l'assigner à Croix ou à la croix directionnelle elles-mêmes, qu'elle prend en charge tant qu'elle est maintenue).

Validée côté hôte (tests de logique) ; sur console, seulement par le jeu du mainteneur pour l'instant.

Visée assistée

Activée par défaut, liée à L (l=aim). Elle coûte du temps d'image : les hooks caméra et unités qui l'alimentent sont installés dès que les liaisons portent aim, et leur coût n'est pas encore mesuré. Liez aim à un autre bouton — par exemple cross=aim — et maintenez-le. Pour la désactiver, mettez l=lclick dans controls.txt (sans autre liaison aim) : les hooks ne sont alors pas installés et les sticks reviennent au schéma simple ci-dessous.

Tant qu'aim est lié (le défaut), les sticks sont en mode visée, en jeu :

Entrée Vita Avec aim lié
Stick gauche Déplacement seul : le personnage marche dans la direction du stick (le rayon suit l'inclinaison), sans jamais attaquer, parler ni ramasser quoi que ce soit par accident ; relâcher = arrêt net
Stick droit Curseur libre, comme sur PC : il ne clique rien tout seul, et il atteint le HUD (ceinture, boutons de compétences)
Bouton aim (maintenu) Agit sur la meilleure cible : votre propre cadavre à portée, sinon ce que survole le curseur, sinon l'ennemi le plus proche de l'axe dans un cône de ±35° autour du curseur (jamais un ennemi hors du cône), sinon le coffre / la porte / le portail / le PNJ le plus proche (ou, hors ville, l'ennemi le plus proche), sinon une sortie de niveau, sinon votre propre cadavre où qu’il soit à l’écran, sinon un simple clic gauche sur le curseur (maintenu avec le bouton ; le stick droit continue de viser)

Sans aim lié (désactivation), les sticks gardent l'ancien comportement simple (stick gauche = déplacement direct : le curseur orbite autour du personnage avec un clic gauche maintenu ; stick droit = souris libre, sans clic) et L est un simple clic gauche. Hors partie (menus, sélection de personnage), le comportement simple des sticks s'applique toujours, et le bouton aim y est un simple clic gauche — c'est pourquoi L clique désormais dans les menus.

Un losange marque la cible hostile courante (doré une fois que le jeu confirme le survol). On peut le masquer : diamond=off dans controls.txt (la visée elle-même ne change pas ; diamond=on par défaut). La visée assistée ne fait qu'emprunter le curseur : il se place sur la cible, maintient le clic une fois que le jeu signale le survol, puis revient là où vous l'aviez laissé au relâchement — comme le clic d'arrêt qui termine une marche. Le curseur prime sur tout : ce qu'il survole est ce sur quoi aim agit, avant tout cône. Les distances se mesurent dans le monde, pas en pixels d'écran, et une unité que le jeu refuse de survoler — un critter, un vautour encore en l'air — est abandonnée au bout d'un moment au lieu de capturer chaque appui (jusqu'à 32 unités de ce genre sont mémorisées : une meute de critters ne cache plus le monstre derrière elle).

Panneaux ouverts (inventaire, coffre, marchand, menus de PNJ, fenêtre d'ajout de socket de Larzuk…) : les deux sticks déplacent le curseur et aim est un clic gauche. La liste des panneaux vient des drapeaux d'interface du jeu ; la fenêtre d'ajout de socket (indice 0x0E) a été ajoutée en 0.1.18-beta et n'a eu qu'un premier essai sur console.

Tout le reste — potions, compétences, Alt, aide aux objets, menu radial — reste au mapping ordinaire de controls.txt, et les deux se combinent : le repère cyan de l'aide aux objets montre l'objet au sol ciblé que aim soit lié ou non.

Clés de réglage (toutes optionnelles, controls.txt) :

orbit_min=40       # px (à 600 lignes), rayon de l'anneau de marche à faible inclinaison
orbit_max=110      # px, stick à fond
cone=35            # demi-angle du cône de visée autour du curseur, en degrés
hover_h=28         # hauteur de survol par défaut au-dessus des pieds d'une unité, px
diamond=on         # off = masque le losange de visée (la visée marche toujours)
hud_h=60           # bande basse où les clics ASSISTÉS n'entrent jamais, px (le curseur
                   # que vous pilotez, lui, y va, sinon la ceinture serait inatteignable)
reach=300          # portée de `aim` vers un coffre/une porte/un PNJ, unités du monde
hostile_reach=800  # portée de `aim` vers un monstre (dans ou hors du cône), unités du monde

Non repris de l'ancienne expérience scheme=aim : les emplacements de compétence qui accrochent le lancer sur une cible (et le choix slot1..7 = hostile/ground/corpse), les boutons de face dédiés aux panneaux, L maintenu = rester sur place, et le parcours du butin à la croix directionnelle avec étiquettes natives (l'aide aux objets le remplace). Tout cela vit dans l'historique git et la branche manette/pad-core-port. scheme= et D2_PAD n'existent plus.

Validation : tests de logique hôte (pad_core), plus les essais du mainteneur sur console (menus de PNJ, tactile, menus de l'écran-titre). Le coût en temps d'image des hooks n'est pas mesuré, et le changement de défaut n'a pas encore été testé par la communauté.

Appuyer sur Select ouvre immédiatement un menu à 7 secteurs centré à l'écran. Le stick gauche pointe vers un secteur (il s'illumine en doré) ; relâcher Select valide le secteur pointé à cet instant précis. Ramener le stick au centre avant de relâcher Select annule (aucun secteur n'est alors sélectionné, même si un secteur avait été survolé juste avant).

Secteur Action D2
Compétences (haut) T — arbre de compétences
Quêtes Q — journal de quêtes
Carte Tab — automap
Équipement I — inventaire
Chat Entrée — ligne de discussion
Guilde P — écran de groupe
Personnage C — feuille de personnage

Ce menu remplace les anciens raccourcis dédiés à chacune de ces actions (personnage, compétences, quêtes, automap, inventaire) : un seul geste pour les sept, plutôt que sept combinaisons à mémoriser. Le clavier virtuel n'y est volontairement pas inclus : il s'ouvre de lui-même dès qu'un champ texte prend le focus, et garde sinon son propre geste dédié — R + Triangle.

Clavier virtuel (R + Triangle)

Le clavier s'ouvre de lui-même quand un champ texte prend le focus — nom de personnage, compte et mot de passe Battle.net, nom et mot de passe de partie. La fermeture reste manuelle (Select ou la touche FERMER — Start/Entrée valide le champ mais laisse le clavier ouvert), et un clavier fermé ne se rouvre pas tant qu'un autre champ n'a pas pris le focus (ou que le même ne l'a pas perdu puis repris). R + Triangle l'ouvre toujours. D2_KBAUTO=0 dans ux0:data/d2vita/env.txt coupe l'ouverture automatique. Le clavier se dessine à 80 % d'opacité par défaut — le personnage/menu reste visible en filigrane derrière — réglable avec D2_KBALPHA=0-100 (100 = ancien rendu opaque). En dessous de 100, le mélange se fait sur le GPU (une couche texturée à part, composée aux côtés du menu radial) quand ce chemin est armé ; sinon le clavier revient à un mélange CPU, qui relit l'écran et coûte nettement plus cher par image — opaque (100) reste dans tous les cas le chemin rapide. Le runtime lit pour cela l'état « contrôle focalisé » du jeu lui-même (lecture seule, l'en-tête du contrôle seulement — jamais le texte). Chaque transition est journalisée dans boot_progress.txt en clavier: focus champ ON/OFF (plafonné à 64 lignes par session). Le chat en jeu n'est pas encore couvert (phase 2).

Entrée Action
D-pad Naviguer sur les touches
Croix Taper la touche sélectionnée
Rond Effacer (backspace)
Start Entrée
Select (ou touche FERMER) Fermer le clavier
Tap tactile sur une touche La taper directement

Le rendu du clavier virtuel lui-même (police, disposition) vient du moteur générique winx86 (src/platform/vita_kb.h/vita_kb_font.h). Le déclenchement, lui, est spécifique à d2vita : R + Triangle.

Panneau Settings (écran-titre)

Un petit onglet « Settings » (appelé « Controls » jusqu'à la 0.2.0) se trouve dans la bande gauche de l'écran-titre. Un tap dessus ouvre un éditeur plein écran à trois onglets :

  • Buttons — une grille de tous les boutons (L, R, Select, boutons de face, croix directionnelle, Start) par couche : seul, avec R maintenu, avec L maintenu. Chaque case est l'action déclenchée. Les trois combinaisons fixes (R+Select = Espace, R+Triangle = clavier, L+Start = capture) sont grisées.
  • Tuning — cône de visée, portée monstres et objets, hauteur de survol, bande HUD, marqueur de visée, vitesse du curseur, zone morte et anneaux de marche, avec défaut et plage.
  • Game — les réglages fonctionnels qui vivent dans ux0:data/d2vita/env.txt : rendu 960×544 natif, zoom 640×480, forme des menus (4:3 ou étirés), remplissage des vides du HUD, les deux options solo (runewords ladder, reset Akara illimité — désactivées, elles s'écartent du jeu d'origine), son, clavier automatique et son opacité, serveurs privés uniquement. Les variables de performance et de debug ne sont volontairement pas proposées. env.txt n'est lu qu'au démarrage du jeu : ces changements s'appliquent au prochain lancement (le panneau le dit) ; une option remise à son défaut perd simplement sa ligne, et le reste du fichier (dont D2SCHED=, D2WRITE= et vos propres lignes) est laissé tel quel.

Couleurs : blanc = défaut, or = personnalisé, vert = modifié, pas encore enregistré. Les changements de Buttons et Tuning s'appliquent tout de suite ; à la fermeture, seul ce que vous avez changé est écrit dans ux0:data/d2vita/controls.txt (vos commentaires et vos autres lignes sont conservés ; un ancien alias comme croix= est remplacé, pas dupliqué), et les changements de l'onglet Game dans env.txt.

Entrée Effet
Croix directionnelle Buttons : se déplacer dans la grille. Tuning et Game : Haut/Bas choisir, Gauche/Droite changer (maintenir = répétition)
Croix / Carré Action (ou valeur) suivante / précédente, maintenir = répétition
Triangle Remet l'élément sélectionné à son défaut
L / R Changer d'onglet
Rond / Start Enregistrer et fermer
Tactile Tap sur une case = la sélectionner, second tap = la faire tourner ; les bouts < > d'une case la font avancer (maintenir = répétition) ; tap sur un onglet ou sur les boutons du bas

Lier aim à un bouton alors qu'aucun ne l'était au lancement demande de relancer le jeu (les crochets de visée sont armés au démarrage) ; le panneau le signale.

Remappage sans rebuild

Fichier ux0:data/d2vita/controls.txt. Une copie de référence entièrement commentée y est déposée automatiquement au tout premier démarrage du jeu (ne remplace jamais un fichier déjà présent — supprimez le vôtre et il revient au démarrage suivant) ; le tour d'horizon ci-dessous couvre le même terrain.

cross=rclick
r+triangle=f5
l+circle=perso   # couche L (défauts : l+cross=inv, l+circle=automap, l+square=vk:0x4F)
l=lclick         # action de L seul (défaut : aim ; lclick = désactive la visée assistée)
r=none           # action de R seul (défaut : rclick) — "none" la désactive
select=inv       # action de Select seul (défaut : ouvre le menu radial)
cross=aim        # tout bouton, couche ou l=/r=/select= peut porter `aim` (voir Visée assistée)
orbit=70         # rayon du déplacement direct (px), mode simple
sens=18          # vitesse du stick droit (défaut 18)
deadzone=0.15    # défaut 0.15
anchor_y=470     # ancre verticale du personnage (pour une résolution de 1000)
diamond=off      # masque le losange de la visée assistée (défaut on)

Plages acceptées pour les clés numériques — une valeur hors plage est refusée (le défaut reste) et signalée dans boot_progress.txt : orbit 10–400, sens 1–100, deadzone 0–0,9 (une fraction : 0.15, pas 15), anchor_y 100–900, orbit_min/orbit_max 5–400, cone 5–90, hover_h 0–150, hud_h 0–300, reach 50–2000, hostile_reach 100–2000. En particulier orbit=1000, utilisé par d'anciennes versions, est refusé : il enverrait le point de marche hors de l'écran et plus rien ne répondrait. Un BOM UTF-8 en début de fichier (ajouté par certains éditeurs Windows) est ignoré.

Boutons : cross/croix, circle/rond, square/carre, triangle, up, down, left, right, start (préfixer r+ pour la couche R, l+ pour la couche L — jamais les deux sur la même ligne). l=, r= et select= sont des clés de premier niveau à part (sans préfixe de bouton) : elles fixent ce que L, R et Select font seuls, pas en combo.

Actions : lclick, rclick, alt, items, aim, shift, tab/automap, esc/echap, inv, perso, skills, quests, swap, space, run, enter, pot1-pot4, f1-f8, vk:0xNN (code de touche brut), none.

Une ligne que le jeu ne reconnaît pas — clé ou bouton inconnu, action inconnue, nombre hors plage, ou (r+select=/l+select=) un combo que Select n'a pas — n'est jamais appliquée, et le dit désormais : regarder boot_progress.txt pour les lignes controls.txt ignore "...", une par ligne rejetée (plafonné à 8). Avant cela, une ligne fautive ne faisait simplement rien, sans indiquer pourquoi — le cas le plus fréquent étant un controls.txt copié depuis un build qui ne reconnaît pas exactement les mêmes clés que celui réellement lancé.

Pas encore possible : un seul bouton déclenchant plusieurs actions à la suite (par exemple « ouvrir la carte et courir »).

Diagnostic

D2_INPUTLOG=1 dans env.txt journalise les mots de boutons bruts reçus — utile pour déboguer un remappage qui ne se comporte pas comme attendu. N'activer que pour du diagnostic, pas en jeu normal (coût de journalisation).

Gotcha connu

Si la boîte de chat est ouverte, Échap la ferme d'abord (un deuxième appui est nécessaire pour ouvrir le menu).