Modification de l'interface (et autres trucs mineurs)

Bonjour,

A peine arrivé et déjà en train de critiquer.

Je suis en train de faire le tutoriel de shoot’em up, en tentant de l’améliorer un peu pour découvrir les techniques avancées de GD.
J’arrive à peu près à faire du parallaxe, même si je manque cruellement d’une fonction maploop (l’image se répête automatiquement une fois arrivée au bout, de façon à avoir un fond défilant mais uniforme sans avoir une image de 12 000 x 12 000 pixels).
J’ai remarqué quelques détails qu’il serait intéressant de corriger/implémenter.
Désolé si ces derniers points ont été abordés dans des posts précédents, mais je ne les ai pas trouvé en deux heures de recherche sur le forum.

Voici une interface “custom” pour mieux expliquer ce que j’ai en tête :

  • Objets instanciés (à gauche)
    Que se passe-t-il si on a un empilement d’objets dans la scène ?
    Ben oui, on ne peut plus atteindre celui qui nous interesse.
    L’objectif de la fenêtre Objets Instanciés est de pouvoir agir sur les objets dans la scène sans à les sélectionner dans celle-ci.
    Ainsi, un clic droit sur l’objet à gauche nous donne accès à ses propriétés (taille, calque, etc.)avoir .
    Il me semble que MMF2 propose une fenêtre assez proche dans son fonctionnement

  • Onglet Scene et Evenement en haut
    Franchement …
    Que fait-on 90% du temps ?
    On va dans la scène. Puis dans les évènements. Puis on teste la scène.
    Pourquoi devoir traverser tout l’écran pour passer des premiers au dernier ?
    Je n’ai pas trouvé de logique à leur positionnement en bas de l’écran.
    Aussi je propose de les mettre en haut, le plus près possible du ruban de menu.

  • Boutons Enregistrer et Tester la scène
    Même principe que plus haut.
    Pourquoi devoir changer de menu pour deux fonctions essentielles, utilisées plusieurs fois par minute ?
    Autant leur donner un accès direct.

  • Case à cocher Voir la fenêtre de jeu
    Si vous utilisez Blender, vous avez déjà dû utiliser une caméra. Et vous savez combien il est pratique d’avoir une délimitation visuelle de la fenêtre de rendu.
    Cette fonction n’existe pas dans GD. Et je trouve cela dommage, car cela permet de juger du placement et des proportions des sprites entre eux, dans la fenêtre de jeu.
    Mais aussi de planquer des éléments hors écran que le joueur n’est pas censé voir.
    ici, j’ai crée un objet ZoneCamera pour délimiter la surface de rendu en jeu (800x600), mais c’est une astuce, et c’est un truc en plus à gérer dans les évènements.

  • Liste déroulante Calque actif
    Même problème que l’empilement des objets, mais avec un twist.
    Je n’ai pas vu d’indications visuelles sur le calque actuellement utilisé. Pas cool, car je risque d’ajouter tout un tas d’objets au mauvais calque.
    Deuxième problème : pourquoi alors que je suis sur le calque Fond, je peux agir sur les objets du calque PremierPlan ?
    Comment je fais pour sélectionner l’objet FondEtoile, alors que l’objet PremierPlan est au dessus ?
    Je propose donc un verrouillage des calques, où seul le calque actif (et les objets qu’il contient) réagiront à la souris en mode édition.
    Je pourrai ainsi positionner mes objets en les distribuant entre les calques, et sans risquer de déplacer les objets des autres calques.

Au niveau des détails toujours :

  • Afficher le nom de l’objet actuellement sélectionné. Ca aide pour savoir lequel des 50 objets de la scène est actuellement sélectionné.
  • Un zoom plus véloce à la molette de la souris. Celui par défaut zoome beaucoup trop lentement (1 pixel par cran je dirais). Il me faut une bonne minute de roulement pour passer d’un zoom proche à un zoom d’ensemble.

Merci d’avance.

C’est faisable en créant ( Pour l’exemple Shoot, avec une largeur d’écran de 640 pixels ) 3 objets arrière plan avec la même image ( Appelons les B1, B2, B3 ).
Ensuite, tu rajoute un évènement :

Conditions : Aucune Actions : Faire =int(CameraX()/640)*640 à la position X de B1 Faire =int(CameraX()/640)*640 -640 à la position X de B2 Faire =int(CameraX()/640)*640 +640 à la position X de B3

Une liste de taille/visibilité similaire à celles des objets actuelle me semble peut être trop importante, mais un bouton permettant de l’afficher ( avec possibilité de la raccrocher à l’interface comme l’éditeur de calque ) est en effet intéressant.

Le truc serait d’enregistrer dans les paramètre la position préférée de la position.
A noter que si tu souhaite avoir scène/évènements côte à côte, tu peux tirer l’onglet Evenements pour le detacher. ( Il faut un bon écran par contre ).

Théoriquement, un ruban permet d’ajouter également de petites icones souvent utilisées comme l’enregistrement en haut à gauche ( N’obligeant ainsi par à rajouter un bouton enregistrer telle une verrue en plein milieu d’une barre d’outils n’ayant rien à voir avec ), mais l’implémentation utilisée par Game Develop ne permet pas de le faire. Mais ce sera un plus appréciable en effet.
Pour le test de la scène, le truc est que le mode édition et aperçu donnent tout de même accès à des fonctionnalités très différentes, et il faut que la séparation entre les deux reste assez claire… Un simple bouton Tester la scène ne resoudrait pas le problème de devoir cliquer sur “Mode aperçu” dès que l’on souhaite avoir par exemple accès à la pause ou au debugger.

Sous la forme d’un outil complémentaire à la grille pourquoi pas ( Un sorte de masque qui affiche la taille de la fenêtre réelle ).
Mais il ne s’agira que d’un “masque” qui se déplacera avec la caméra lors de l’édition, car il y a des chances que la caméra soit déplacée durant le jeu, donc créer un masque qui resterait collée à l’origine serait assez inutile à mon sens.

Tu peux actuellement masquer temporairement un claque en désactivant sa visibilité.

L’objet actuellement selectionné en cliquant dessus ou l’objet actuellement selectionné pour l’ajout sur la scène ( Dans quel cas, tu peux aussi faire un glisser déposé depuis l’éditeur d’objets ) ?

J’ai modifié ça en le rendant 3 fois plus rapide, ça me semble raisonnable. Mais il y a déjà des niveaux de zoom prédéfini pour passer rapidement d’un zoom à l’autre.

Dans le cas d’un scroll horizontal, mais dans le tutoriel, c’est un shoot en huit directions.
Là, ça devient moins évident.
De ce que j’en pense, il faudrait afficher 5 même images en avance (3 devant + une de chaque coté), pour être sûr que la transtion se fasse dans toutes les directions. Niveau calcul, c’est moins évident … :stuck_out_tongue:

L’idée est d’avoir une liste de tous les objets ajoutés dans la scène, et de pouvoir y accéder sans devoir scroller d’un bout à l’autre de la surface de travail (dans le cas d’un shoot horizontal par exemple), avec tous les problèmes de superposition inhérent (comment atteindre l’ennemi placé sous le brouillard de premier plan ? ).

Je pensais pas qu’on pouvait déplacer les onglets.
C’est mieux comme ça, mais ce serait plus intéressant à mon avis d’avoir ces deux onglets près du ruban, et non pas à l’opposé.
Dans un navigateur internet, les onglets sont en haut, près de la barre d’outils.

Et pendant que j’y pense.
Quand je veux ajouter une image, je vais dans Banque d’image (1 clic), puis dans Ajouter une image (1 clic). Et rien ne se passe.
Parce que je n’ai pas cliqué sur l’élément Image (1 clic) dans le menu de gauche.
Ca ne pourrait pas se faire automatiquement ?
Dès qu’on clique sur Ajouter une image, GD se positionne sur l’élément Image et ouvre l’ajout d’image.
Ca me semble plus naturel.
Surtout que je n’ai pas compris l’intérêt d’avoir un élément Images toujours à vide dans le gestionnaire de projets …

Dans RPG Maker, le bouton Tester le jeu est toujours accessible, et ça fait gagner pas mal de temps.
Dans le cas de GD, l’idéal serait une barre d’outils toujours accessible, avec les fonctions dont on a le plus besoin.
Le bouton “Tester la scène” deviendrait “Arrêter la scène” une fois enclenché. Ainsi, on aurait un seul bouton pour deux fonctions.
Ou alors, intégrer un bouton Fermer à la fenêtre de test, pour pouvoir la fermer comme d’habitude.

L’important c’est d’avoir une idée de ce que le joueur verra à l’écran, sans avoir à lancer un test de la scène.
Etant donné qu’il n’y a pas de mesure dans l’écran d’édition, j’ai trouvé assez difficile d’évaluer les tailles des éléments par rapport à l’écran final.
Trop gros ? Trop petit ? Trop à gauche ? trop à droite ? Trop excentré ? Trop rotationné ?
Un seul moyen : tester la scène.
Il y aurait plus efficace, imo.

Des clics de souris en plus.
Et je perds ma vision globale de la scène de jeu.

Le best serait une fenêtre de calques à la Gimp, où on voit visuellement le calque actuellement sélectionné, et sur lequel on peut seulement agir.
Ou alors, une gestion des couches à la RPG maker, là aussi la couche active est interactive, pas les couches sup/inf.
On pourrait l’inclure comme sous-élément d’une scène dans le gestionnaire des projets.
Actuellement, je dois éparpiller mes objets sur toute la surface de travail, puis créer un évènement au leancement du jeu pour remettre tout ça aux bonnes coordonnées.
Je ne pense que pas que ce soit le fonctionnement normal d’un éditeur WYSIWYG.
Il faut pouvoir empiler un nombre infini d’éléments, et pouvoir modifier n’importe lequel d’entre eux à tout moment.

C’est pour ça que dans mon exemple d’interface, j’y ai collé une liste déroulante Calque actif.
Non seulement on peut choisir directement le calque sur lequel travailler, mais on sait toujours sur quel calque on agit.

L’objet de la scène de jeu.
Ex : je veux accéder à mon calque de fond, une nuit étoilée. Problème, j’ai aussi mon objet premierplan devant, ainsi que mon vaisseau, mon viseur, mon interface, et d’autres éléments de décor en prime.
Comment je fais pour savoir que j’ai cliqué sur ma nuit étoilée, sachant que le premier plan et l’interface sont de même taille ?
Ben oui.
Faut que je chamboule tout, et que je clique sur les options pour voir le nom de l’objet réellement sélectionné. Et recommencer jusqu’à ce que la souris clique sur l’objet de la scène que je veux modifier.
Clics de souris en trop.

Je viens de tester ça.
C’est déjà plus sympa de pouvoir zoomer sur un élément, et dézoomer pour englober toute la scène, afin voir les objets que l’on doit encore ajouter au niveau.
Mais je trouve le zoom à la molette vraiment trop lent pour être pertinent.

Là encore, l’idéal serait un réglage de la vitesse de zoom pour la molette dans les options.
Parce que c’est quand même plus naturel de zoomer avec la molette que de remonter dans le ruban supérieur et choisir un niveau de zoom (2 clics contre aucun).

Merci pour la réponse rapide.

Tu as de très bonne idée, c’est louable a toi

Je suis d’accord sur les principales idées :slight_smile:
mais malheureusement si 4ian ne trouve pas
ça utile, il ne le fera pas car il aura jugé
ceci inutile, bref

Je trouve quand même que tu as
de sacrée bonne idée :wink:

En plus t’es idée son utile je trouve :smiley:

Eh bien déjà bienvenu dans la communauté, mtarzaim (il y a une section “présentation” dans le forum, si cela t’intéresse).
Je vois bien ce que tu veux dire : GD manque parfois d’intuitivité, et c’est vrai que l’interface n’est pas des plus optimisée
quand on veut travailler plus efficacement :blush: (quoique l’on s’y fait quand même rapidement).
Mais cela vient du fait que c’est un logiciel tout jeune et que 4ian bossait (très dur !) jusqu’à maintenant sur l’implémentation
de nouvelles fonctionnalités; rien que ces derniers mois nous avons eu droit aux objets vidéos, moteur physique, systèmes de
particules, et bien, bien d’autres. Surtout que 4ian est la seule et unique personne derrière Compil Games.
Donc soit indulgent et laisse-lui le temps de fignoler les capacités de son bébé :slight_smile:

oui, je dirais même qu’on peut le laisser se concentrer sur les fonctionnalité avant et voir pour l’interface après.

J’ai ajouté la possibilité d’afficher un masque de la fenêtre de jeu, et une option dans les préférences pour choisir l’emplacement des onglets ( Haut/Bas ).

Wouah! Itz ze spide auf laïghte !

Merci pour cette réaction à réaction. Surtout de la part de mes poignets.

Je me doute bien que 4ian ne peut pas tout faire, et qu’il a surement d’autres trucs dans sa vie que de répondre à toutes les exigences des chieurs de l’interweb.
Mais je remarque aussi qu’il n’y a pas de jeu “complet” encore dispo sur GD (à part peut être BattleStars en version 0.6 ? ).

Je pense que ça reflète le problème de la complexité d’un jeu complet, avec sa multiplicité d’objets graphiques difficile à gérer avec un système de calques encore peu dégrossi.
Perso, j’aurai d’abord cherché à développer l’existant (faire un shoot 2D à l’ancienne) plutôt que de me lancer dans un moteur de particules, voir un moteur physique.
Mais bon, c’est vrai que c’est plus vendeur un log qui gère la gravité et les effets visuels, qu’un autre qui fait du clone de gradius.
C’est mon coté rétro qui parle. :nerd:

Tu n’as peut-être pas bien regardé.
Comme jeux “complets” tu peux regarder du côté de “Bloody zombies” et “Drift roads”, mes tout premiers jeux avec GD.
D’accord, ils sont courts, mais ce sont des petits jeux faits pour être très “casuals”.
Tu as aussi les très bons “Ecce Deus” et “Minotaure” (entre autres), qui sont nettement plus poussés et fignolés.

Et le manque de jeux plus ambitieux sur le site est dû aux utilisateurs non au logiciel; regarde des sites comme celui de Construct :
peu de jeux finis, que des “work in progress” (alors qu’ils ont une bien plus grande communauté, et plus ancienne). Un jeu complet,
même humble, demande surtout pas mal d’organisation et de temps libre, en plus de la maîtrise du logiciel.

Moi, personnellement, je suis sur un gros projet, et ce ne sont pas des potentiels défauts de l’interface qui m’arrêteront.
Gérer la précision du gameplay ainsi que ses limites, incorporer les dialogues, bien équilibrer les compétences, designer les visuels,
les homogénéiser, raccorder la montagne de variables globales entre elles, optimiser les fps,… C’est tout cela mes vrais problèmes :slight_smile:
4ian programme les nouvelles fonctionnalités (comme les effets graphiques) afin que nous disposions du maximum d’options
disponibles, au cas où nous pourrions nous sentir freinés dans nos différentes idées.

Lance-toi à fond dans le logiciel, commence à faire quelques expérimentations et tu verras que tes soucis d’interface n’entacheront
quasiment pas ton processus de création.

Ce serait intéressant de mettre ces projets “complets” en avant sur le site, dans une rubrique genre Editor’s picks.

Parce qu’on tombe d’abord sur “Jump’n Physique”, joli mais quasi injouable, battlestars (fonctionnel mais simpliste) et d’autres trucs peu engageants (leur image de présentation en tout cas).
Ca ne fait pas une très bonne pub pour le logiciel si les jeux en tête de liste sont des minijeux ultra casuals sans même un hi-score.

Ah là, j’avoue que je suis d’accord avec toi :slight_smile:
C’est vrai que la présentation des jeux pourrait être améliorée.

Notez que j’avais déjà commencé une telle rubrique, mais sur le site : compilgames.net/index.php?file=kop16.php
Et que la rubrique Projets terminés est dans la même veine : viewforum.php?f=29

Mais c’est deux trucs assez récent, ça mériterait sans doute un peu plus de visibilité et de jeux terminés.

J’ai mis à jour ( de façon visible sur l’interface mais aussi au niveau du code ) l’éditeur de calques. Il suffit de sélectionner un calque dans celui ci pour que les objets posés arrivent dessus. Un double clic sur “l’oeil” permet d’activer ou non l’affichage du calque ( dans quel cas l’oeil devient grisé ).
Le calque sélectionné est mis en valeur par une petite flèche, on a donc en même temps l’aperçu du calque sélectionné et la possibilité de modifier celui ci.

J’ai rajouté une liste des objets sur la scène. Elle reste assez basique mais permet de sélectionner des objets, qui seront alors sélectionné sur la scène, ce qui permettra de pouvoir ensuite facilement les bouger, supprimer, modifier, voir de retrouver certains objets cachés ou perdus.

Good ^^

Super, merci 4ian :slight_smile:

Cool, ça à l’air nettement plus sympa comme ça.
On pourra enfin gérer des décors complexes sans que ça vire à l’usine à gaz.
La présentation aussi me semble plus claire.

Il y a un moyen de garder l’organisation des fenêtres dans GD ?
Dans la version actuelle, je suis obligé de remettre les fenêtres dans l’ordre que je veux à chaque ouverture.

En continuant de découvrir GD, je suis tombé sur deux trucs qui pourrait être améliorés je pense.

  • Test de la scène dans une fenêtre
    Quand je teste ma scène dans une fenêtre, tout va bien.
    Mais ensuite, je ferme cette fenêtre de test, et, lorsque que je veux tester à nouveau, la fenêtre s’ouvre, mais la scène reste figée.
    Il faut que je ferme cette fenêtre, que je clique sur Edition de scene, que je clique sur l’onglet scène (l’image de la scène se rafraichit alors), puis que je reclique sur Test, et enfin sur tester dans une fenêtre, pour que la fenêtre de test fonctionne à nouveau.
    J’ai l’impression que c’est un problème avec un close, quelque part dans le code de la fenêtre de test, qui ne ferme pas bien tous ses appels, et laisse le système dans un état instable.
    Revenir en Edition oblige GD à réinitialiser son moteur graphique, et donc permet le fonctionnement normal de la fenêtre de test.
    A moins que ce soit mon ordi qui n’est super-compatible avec l’OpenGL.

  • Ajout d’un objet rébarbatif
    Je crois l’avoir lu ailleurs, mais je le remets ici quand même.
    Actuellement, pour ajouter un objet, il faut faire un clic droit sur la bibliothèque d’objet.
    Puis choisir Ajouter un objet.
    Puis clic droit sur l’objet vide et choisir Propriétés.
    Puis un clic sur Ajouter une animation, un clic pour ajouter l’image dans l’animation, un clic sur la vignette d’image pour visualiser l’image dans l’animation. Et enfin, un clic pour valider la modif.
    Pour terminer, un clic droit sur l’objet, et un clic sur “Modifier le nom”. On rentre le nom, Entrée, et c’est fini.

Je trouve cette procédure un peu longue …
L’idéal serait que, lorsqu’on ajoute un objet à la bibliothèque d’objets, la fenêtre de propriétés s’affiche automatiquement (quel intérêt d’ajouter un objet vide de toute manière ? ).
Dans cette fenêtre dès que l’on clique sur une image de la bibliothèque d’images, l’animation 0 est créée à partir de cette image. Même le nom d’objet est fixé à partir du nom du fichier image.
Libre à l’utilisateur de modifier ce nom depuis cette même fenêtre (plus besoin de passer par un clic droit depuis l’interface principale).
Au final, on a 3 clic de souris pour créer un objet immédiatement utilisable, contre 10 dans le système actuel.

On peut encore plus automatiser cette procédure, en permettant la génération automatique d’objets à partir d’une sélection multiple d’images (un bouton Génération Auto dans l’onglet Biblio d’objet).
Cela ferait gagner beaucoup de temps, surtout qu’il faut reconstruire la bibliothèque d’objet pour chaque scène.
Ce qui est vite pénible quand on a les mêmes dizaines de sprites à générer pour de multiples scènes.

L’idéal de l’idéal serait, bien sûr, une bibliothèque d’objets commune à toutes les scènes, et pas à chaque scène.
Une fois le sprite créé, on peut l’utiliser dans n’importe quelle scène du projet, ou même l’exporter pour des projets futurs.

A part ça, c’est tout … pour l’instant. :smiling_imp:

Ca existe déjà, dans l’éditeur d’objet, va dans “Global à tout le jeu”.

Je vais réfléchir à pouvoir sauvegarder une configuration.

Sans doute un bug, je vais regarder ça aussi.

L’ouverture automatique de l’éditeur n’est pas une mauvaise idée en effet, même si il faudra aussi prévoir des noms par défaut pour les autres types d’objets que les Sprite.

Les objets globaux devraient t’intéresser dans ce cas, c’est leur but. Quand à les utiliser dans un autre jeu, ouvrir les deux jeux en parallèles et faire des copier coller devrait suffire.
EDIT : Grillé.

Effectivement c’est pas mal comme ça :slight_smile:

Merci pour cette précision.
Ca va simplifier beaucoup de choses.

Mais pourquoi avoir fait des objets “locaux” ?
Les objets globaux répondent à tous les cas de figure, je crois.
Et les groupes d’objets servent déjà à classer les ressources selon leur utilisation.