Le kick fait effectivement avancer le temps, c'est une question d'équilibrage, mais pas très bien gérée, je suis plutôt d'accord. Le kick a été intégré bien après le punch qui lui était déjà dans le jeu depuis les premières versions de SUPERHOTline Miami. Pour le punch, j'avais équilibré en mettant un cooldown dessus, et kick, j'ai forcé la vitesse du jeu à 1 (le facteur de temps va de 0.01, presque arrêté, car techniquement, arrêter complètement le temps pose certains problèmes à 1, vitesse réelle). Mais au final, c'est vrai que ça n'est pas très harmonisé; je crois que SUPERHOT fait légèrement avancer le temps lorsque l'on punch un ennemi, sans pour autant mettre la vitesse du jeu à 1. Je pense que je vais tester ça pour le punch ET le kick, forcer la vitesse entre 0.25 et 0.5, puis voir comment tout ça va rendre en jeu. Et en même temps, ça permettra de régler l'exploit pour faire avancer le temps sans utiliser la touche espace. Et en dernier ressort, si après playtest ça reste toujours rentable à exploiter, je verrai pour faire en sorte que le kick et le punch consomment une partie de la jauge de focus, et que lorsque l'on punch/kick alors que la jauge est vide, la vitesse du jeu est forcée sur 1 (ça apporterait une dimension de gestion de la jauge de focus car plein d'actions en dépendraient).
Je ne crois pas que ce dont tu parles au niveau de l'IA soit un bug, mais plutôt ta perception de leur temps de réaction. Pour faire simple, ils réagissent comme suit : quand le joueur est dans leur champ de vision, leur chrono interne augmente (en fonction de la vitesse du jeu, donc si le temps est figé, le chrono progresse moins vite bien évidemment), lorsque ce chrono atteint le temps limite que j'ai choisi pour leur temps de réaction, ils passent en mode attaque du joueur, si le joueur sort du champ de vision, le chrono redescend progressivement vers 0. Ca permet de laisser le temps de réagir au joueur, et évite de se prendre une balle dès que l'on sort de cover, ça rend aussi beaucoup moins efficace la technique qui consiste à se mettre à cover, puis sortir et tirer une balle, puis recommencer, car si le joueur fait ça, le chrono de temps de réaction de l'ennemi n'aura pas le temps de redescendre complètement à 0. En revanche, ça crée des situations où lorsque le joueur passe très vite devant un ennemi, il est possible qu'il passe inaperçu. Personnellement, je ne trouve pas que cela soit gênant, mais je pense pouvoir affiner ce système en faisant en sorte que plus le joueur est proche de l'ennemi lorsqu'il est dans son champ de vision, plus le chrono de temps de réaction monte vite, ce qui serait plutôt logique car on se rend plus facilement compte que quelqu'un est dans notre champ de vision lorsqu'il est proche, que lorsqu'il est éloigné.
Ce lag de la souris dont tu parles est étrange, car je ne rajoute aucun lag au niveau du placement du curseur. Peut être est-ce le léger lag du placement de la caméra que tu ressens comme étant du lag venant du curseur ? Ce lag caméra est là pour rendre ses mouvements plus fluides, sinon la vue se téléporterait juste où tu vises ou sur les cibles des killcams, ce qui aurait pour effet très probable de générer des maux de têtes :)
Le tremblement de la caméra est purement esthétique, et j'ai essayé de le régler de manière à ce qu'il ne dérange pas trop niveau gameplay. La caméra se décale au maximum de 2 pixels autour du point de visée, ce qui fait 4 pixels d'amplitude. Le but était de créer un effet de caméra qui tente de suivre l'action tant bien que mal. Je ne supportais pas l'effet de caméra un peu psyché dans Hotline Miami qui consistait à ajouter une légère rotation à la caméra oscillant de gauche à droite; mais je trouvais l'idée super cool, du coup j'ai fait cet effet de léger tremblement/caméra à l'épaule. Cela dit, l'amplitude du tremblement est réglable, mais si on le réduit trop, bien évidemment l'effet disparaîtra et n'aura plus de raison d'être. Je précise également que de viser avec Maj ne supprime pas, ni n'atténue ce "tremblement".
Concernant ce zoom, c'est vrai qu'il est vraiment utile dès que les niveaux deviennent beaucoup plus grands que la taille de l'écran, c'était le cas dans SUPERHOTline Miami, il était donc important de garder cette feature. Par contre, je ne peux pas la rendre dépendante de la jauge de focus, c'est une feature vraiment trop importante et utile pour que ce soit le cas. Et je trouve aussi difficile de la dissocier du déplacement lent qui va avec, parce que ça multiplierait les inputs et perdrait juste le joueur. C'est aussi vrai qu'il est possible de s'arrêter pour tirer avec le zoom, sans avoir à dépenser du focus en bougeant. Mais j'avais prévu de contrebalancer ça via le système de score, tout est encore en cours de réflexion, mais je comptais faire en sorte que l'algo qui gère le score valorise le fait de faire des kills en se déplaçant, et aussi que les séries de kills durant un mouvement rapportent un max, et bien sûr la série s'arrête si le joueur arrête de bouger pendant trop longtemps. Tout ça dans le but de pousser le joueur à utiliser ce déplacement au ralenti pour faire des jolies séries de kills. Mais c'est vrai que dans la démo, c'est difficile de jauger cet aspect puisque le scoring n'est pas encore intégré.
Pour le punch qui rate parfois, j'essaye de faire de mon mieux, parce que Construct 2 est vraiment relou au niveau de tout ce qui est raycasting. Pour faire simple, pour pouvoir puncher et tuer un ennemi, il faut qu'il se trouve à une certaine distance du joueur, et qu'ils soit compris dans une certaine fourchette d'angle par rapport à celui du joueur, en gros imagine une sorte de mini cone de vision devant le joueur. Puis un rayon qui part du centre du joueur, jusqu'au centre de l'ennemi est lancé, s'il touche un obstacle, le punch ne marche pas (cette partie sert à empêcher de pouvoir puncher à travers un mur, parce que faire un simple check de collisions des hitbox de l'ennemi et du joueur n'empêche pas ça, et serait beaucoup moins précis). C'est peut être pour ça qu'à un coin de mur, tu penses pouvoir puncher l'ennemi parce qu'une partie de son corps dépasse, mais en fait son centre est encore derrière le mur. Malheureusement, c'est la seule solution que Construct met à ma disposition pour gérer ce genre de choses.
Et en temps normal, il me semble qu'il est impossible de passer à travers les ennemis car j'ai fait en sorte que le joueur "rebondisse" contre eux lorsqu'il essaye de leur rentrer dedans à pleine vitesse (je ne pouvais pas les rendre complètement solides pour certaines raisons techniques). Cela dit, si le jeu rame beaucoup et que le joueur se déplace vraiment à sa vitesse maximale, c'est peut être possible de passer à travers un ennemi, mais ce serait vraiment un cas extrême. Je pense que l'imprécision que tu ressens lorsque tu essayes de puncher pendant un déplacement vient du fait que le "cône de vision" qui sert à détecter les ennemis lors du punch est centré sur le joueur, du coup la pointe du cône est plus fine et il est possible de parfois rater plus facilement.
C'est vrai qu'il serait sympa de savoir quel ennemi le joueur va/peut puncher. Cela dit je suis quand même partisan de le laisser mémoriser la portée du punch lui même via la pratique, mais à cause des quelques imprécisions dues aux points techniques mentionnés au dessus, je vais considérer la possibilité de mettre une sorte de glow autour de l'ennemi ciblé.
Pour le changement d'armes, il faut que je retravaille certaines choses. Comme les contrôles pour lancer ses armes, je m'en suis rendu compte quand j'ai vu la vidéo d'At0mium. Dans SUPERHOTline Miami, le perso lançait son arme automatiquement lorsqu'on tentait de tirer alors qu'elle était vide, dans SHOOTOUT Inc, j'ai retiré cette fonction, parce que j'estimais que le joueur pouvait avoir envie de garder une arme pour la lancer sur un ennemi plus tard. Mais malheureusement ce choix ne permet pas de mettre un lancer automatique de l'arme lorsqu'elle est vide. Je vais voir ce qui rendra le mieux en terme de prise en main.
Pour le passage de l'arme 2 en arme 1 lorsqu'on lance l'arme 1, j'avoue ne pas trop savoir quoi faire, il serait bête de laisser l'arme 2 sur le slot 2 lorsque le slot 1 est libre, ça forcerait le joueur à continuer de tirer avec le clic droit. La majorité des FPS font ça lorsque le joueur peut avoir 2 armes. Quand il n'a qu'une arme, le tir est sur le clic gauche, et lorsqu'il en a 2, les 2 clics servent pour tirer. Peut être que de simplifier le ramassage et le lancer des armes comme je l'ai dit au dessus rendra le passage de l'arme 2 en arme 1 plus évident. Il faut penser en terme d'arme principale et d'arme secondaire. Ca me fait penser que je dois aussi ajouter une fonction pour switcher les 2 armes.
Au niveau du gamefeel et du juice, j'essaye vraiment d'en intégrer un max dès maintenant pour éviter que ça me prenne trop de temps plus tard. Mais comme je suis seul à m'occuper de la programmation, du Game Design et du Level Design, ce n'est pas dit que j'aie les moyens de faire énormément plus :)
Merci pour tes retours, ça m'aura pris 2h de mettre en forme cette réponse, mais du coup j'ai de quoi ajouter des choses à ma todo list et changer quelques priorités :)