Bonjour à tous,
Tout d'abord, moi c'est Truelle, comme vous l'avez deviné. Je suis développeur passionné et professionnel. Je suis aussi gamer et ces deux passions se marient parfaitement. C'est de cette façon que j'aime créer des outils pour des jeux et dans ce cas présent, pour Scrap Mechanic !
Pour faciliter certaines opérations et pour compenser des features absentes dans Scrap Mechanic, j'ai décidé de me pencher sur un éditeur de sauvegarde. Toutes ces actions sont à effectuer de façon "déconnectée", quand on ne joue pas, il n'est pas possible de les réaliser pendant que le jeu tourne.
Actuellement les possibilités sont nombreuses mais il est difficile de savoir si les développeurs ne vont pas trouver un moyen de rendre inefficaces ce genre de modifications une fois que le mode Survie sera sorti.
A l'heure de création de ce post, quelques fonctionnalités sont déjà bien implémentées, même si j'ai pas mal d'idées pour les améliorer davantage. Je vais les détailler maintenant.
Cet écran permet de lister tous éléments physiques de la map et de changer leurs propriétés. Pour l'instant, diviser en deux parties, les ensembles (body) et les éléments (shape). Par simplicité, je vais nommer ces termes par leur équivalent en anglais.
Les bodies c'est quoi ? En fait ça représente un ensemble de shapes, c'est-à-dire un groupe d'éléments solidaires. Par exemple, une voiture composée d'un chassis et de quatre roues représente 5 bodies si les roues sont liées avec des pivots (bearing) ou 1 seul body sans pivot. Pour faire simple, si deux éléments se déplacent indépendamment, il y a 2 body.
La principale utilité ici c'est de pouvoir déplacer le body à la position souhaitée.
Et les shapes ? Pour les blocs, il s'agit d'un pavé droit sinon ce sont tous les objets du jeu, à quelques exceptions près (comme les pivots ou les suspensions). Chaque shape a une couleur unique, donc physiquement, un pavé droit de deux couleurs différentes est composé réellement de deux shapes.
C'est la partie la plus intéressante pour la personnalisation, il est possible :
- Pour les blocs : de modifier leurs dimensions (longueur, largeur, hauteur), de changer le type de bloc
- Pour les objets : de modifier la puissance (engine/thruster), changer l'état d'un switch etc...
Dans les deux cas, il est possible de changer la couleur sans être limité par celles du jeu.
On peut aussi modifier leur position car oui, au sein d'un même body, les shapes ont une position relative à ce dernier. Cependant ça reste très expérimental, le comportement de cette information différe pas mal en fonction des objets.
Le véritable intérêt ici et non loin le plus inutile, c'est de pouvoir "téléporter" le personnage. Quand on commence à avoir des constructions vraiment imposantes, surtout celles situées dans les cieux, il est fastidieux de devoir faire des aller retours via un vaisseau ou un ascenseur.
Dans un premier temps, il est possible de créer des "waypoints", des points de passage nommés pour y revenir à volonté. Il suffit de se déconnecter à l'endroit voulu puis d'enregistrer la position actuelle. On aura donc la possibilité de gérer ses waypoints par maps. Il faudra toutefois faire attention que suivant l'évolution de la map, il est possible qu'un ancien waypoint vous fasse apparaître au milieu d'un shape...
Il n'est pas possible de modifier ses coordonnées directement pour l'instant mais c'est prévu.
Dans un second temps, je pensais afficher l'inventaire du perso, mais je vous avoue qu'en mode Creative, ca a pas un super intérêt, bien qu'on ait aussi la possibilité de changer les éléments de la barre d'action. Eventuellement dans une future fonctionnalité de création de save sans passer par le jeu, afin d'avoir une barre d'action personnalisée, rien d'urgent en tout cas.
Cette section affichera les paramètres de la map que l'on définit lors de sa création. Ceux-ci ne sont pas éditables normalement par la suite donc il sera intéressant de le faire de cette façon, comme changer la limite du nombre de joueurs.
Alors là, c'est LA fonctionnalité que tout le monde aimerait avoir dans le jeu. Oui, exporter/importer ses créations !
Le fonctionnement est simple : l'idée est d'exporter tout ce qui se trouve sur la map pour y injecter dans une autre map à la position spécifiée. Il est important donc de faire son oeuvre sur une map vierge (Flat si possible).
Grâce à ça, vous pourriez partager vos créations sans pour autant que les joueurs soient tributaires de votre map. Autre idée, rassembler les véhicules de plusieurs joueurs sur un serveur pour ensuite faire une course ! Ca permettrais aux joueurs de faire leur véhicule chacun de leur coté.
Pour plusieurs raisons, ce système est long et complexe à développer car ça demande des connaissances de chaque objet du jeu, je vous passe les détails. C'est loin d'être terminé, c'est même tout l'inverse mais il est toutefois possible d'exporter/importer des blocs ! C'est pas un vaisseau de la mort qui tue, mais c'est un début.
Pour tous les artistes de MagicaVoxel qui ont toujours voulu voir leur créations prendre vie, il est possible de les importer directement dans Scrap Mechanic !
Le Ctrl+Z ça nous manque, le copier/coller aussi, pourquoi donc ne pas passer par MagicaVoxel ?
Une fois la scène chargée, on peut l'agrandir, la placer à la position voulue, mais surtout, attribuer des blocs différents en fonction des couleurs utilisées. Et en bonus, un aperçu en live pour voir les modifications.
D'ailleurs, concernant l'aperçu, il ne s'agit juste d'une vue de dessus. J'ai pas mal d'idées pour donner la possibilité d'afficher la vue de la structure suivant différents axes mais je doute pouvoir l'afficher en 3D, à voir plus tard.
J'aimerai bien faire un onglet Map, pour avoir une vue d'ensemble de toutes les constructions, en tout cas tout ce qui est représenté par des blocs. On pourrait s'en servir pour placer des waypoints sans passer par le jeu et sans le faire "au pif" (ce qui est stupide).
Avant que l'on me le demande, cet outil est en développement. J'ai aucune version à vous proposer, même si en soi elle est fonctionnelle, elle n'est pas prête à être distribuée. J'ai aucune date d'estimation non plus, comme dirait At0mium, je fais ça "à la cool", je n'ai pas envie de me mettre de la pression.
Notez aussi que les screenshots que vous pourrez apercevoir ne représentent peut-être pas l'aspect définitif de l'application.
Si vous avez des idées, sachez que pour l'instant je vais me concentrer sur celles que j'ai déjà mais n'hésitez pas tout de même à en proposer, en fonction, je pourrais peut-être les intégrer au fur et à mesure.
J'essaierai d'alimenter ce topic avec des notes de dev concernant l'avancement de ce projet. Je mettrais aussi à jour ce post.
Merci d'avoir pris connaissance de ce projet et vous remercie par avance de l'attention que vous y porterez
Impressionnant
A coté mon script en Python pour faire spawn des pauvre forme géométrique est ridicule
L'interface est archi sympa, ce serai cool de pouvoir sélectionner ce que l'on veut importer plutot que tout la map mais bon ça risque d’être ingérable d'un point de vue utilisateur si il faut choisir les bodies que l'on souhaite garder.
En tout cas bon boulot!
Merci, ça fait plaisir à entendre
J'y ai pensé aussi, ce serait peut-être faisable en soi mais j'ai peur que ce soit trop complexe pour l'utilisateur lambda, car il faut connaître tous les bodies liés à la construction qu'on veut exporter et malgré mon interface actuelle, je ne sais pas s'il est possible de le faire facilement. Y'a des risques d'exporter un truc incomplet.
Si c'est pour le cas des constructions actuelles, le moyen de contourner ce problème serait de supprimer tout ce qu'il y a autour plutôt que de devoir refaire une map avec ladite création. Si plusieurs créations sur la même map, suffit de faire des backups et de faire l'opération d'export à tour de rôle.
Il faut aussi noter que les pivots (bearings) ne sont pas des shapes (et donc body) car ils n'ont pas de collisions, de ce fait, il n'est pas possible de les sélectionner pour les exporter (si l'option était disponible).
Pour l'instant c'est la solution la plus simple qui m'est venu à l'esprit, il faut se dire qu'une fois exporté, sauf incompatibilité avec les futures versions de l'app/du jeu, votre création est safe et libre à vous de l'importer et de l'exporter de nouveau pour y apporter des modifications.
J'ai ajouté la première vidéo de l'outil, qui présente le premier onglet.
Je ne vais pas faire un post pour chaque nouvelle vidéo, j'ai juste mis la 2è pour info.
Sinon plus tôt dans l'après-midi, j'ai passé quelques heures à essayer de comprendre le fonctionnement de l'orientation des moteurs, un calvaire sans en être venu à bout et je me suis posé la question suivante : Est-ce vraiment utile de vouloir remplacer un Thruster par un Gas Engine ? ou un Controller par un Thruster ? Je suppose que non.
L'idée est de pouvoir remplacer un objet par un autre, avec des blocs c'est légitime, mais dans le cas un objet c'est stupide n'est-ce pas ?
Ca fait quelques jours que je travaille d'arrache pied sur l'import/export de prefab, comme pour l'instant ce que j'ai fait c'est très basique et ça ne permet pas vraiment d'importer des véhicules, vu que c'est tout de même le plus important.
Le gros du challenge est de comprendre le fonctionnement interne du Controller et du Driver Seat mais normalement c'est chose faite, en tout cas le strict nécessaire pour cette feature. Il ne faut pas oublier qu'il ne suffit pas d'importer les éléments mais aussi garder toutes les liaisons entre eux...
Sans trop m'avancer, je devrais pouvoir vous montrer quelque chose de plus concret (comme une vidéo) d'ici ce WE si tout va bien. J'aimerai dire que le plus gros du travail est fait mais je n'en suis pas si sûr
Une idée (que j'ajouterai au post principal), complémentaire à la map que j'aimerai faire, c'est d'afficher la position du joueur en temps réel. Pas la position chiffrée mais visuelle, pas du personnage mais plutôt du véhicule dans lequel il se trouve. On pourrait représenter le joueur par un cercle par exemple mais si on va plus loin, ce serait très utile de le faire sur un serveur, pour localiser mais surtout tracker les joueurs lors d'une course par exemple.
Je vous laisse réfléchir sur les utilisations, je pense qu'on peut bien s'amuser, si toutefois c'est réalisable.
J'ai essayé de vous promettre une vidéo ce WE et... c'est fait ! Elle est dans la section "Prefabs"
En effet, j'ai beaucoup travaillé sur l'import/export de prefab et ça a payé. Alors tout n'est pas supporté encore, je me suis focalisé sur un prefab en particulier (voir la vidéo dans la section concernée) mais le reste devrait arriver, notamment le support des boutons/switch qui n'a pas été fait.
Bref, je continue d'améliorer cette fonctionnalité. En attendant, si vous avez envie de m'aider et me faire partager vos véhicules pour que je puisse faire des tests d'import/export, pour être sûr de n'avoir rien oublié, même si dans la pratique, on le verra au fur et à mesure de l'utilisation de l'outil.
J'en ai profité pour mettre à jour le screenshot qui était obsolète.
En attendant de pouvoir améliorer le support des différents items du jeu pour le processus d'import/export, je vais intégrer une fonctionnalité que j'ai déjà travaillé mais que j'avais pas prévu d'intégrer.
J'ai fait quelques démos sur twitter, il s'agit de faire du pixel art, en utilisant une image quelconque, de la reproduire sur un plan vertical grâce à des blocs quelconque mais en gardant exactement les mêmes couleurs.
Lors des premiers tests que j'avais effectué, je me suis rendu compte que c'était très lourd en terme de performances pour le jeu, d'avoir plusieurs blocs de couleurs gérés de façon totalement indépendante. Pour faire simple, 1 pixel = 1 bloc.
Mais quand j'ai implémenté l'algorithme d'optimisation des blocs pour MagicaVoxel, je me suis dis qu'il serait possible, dans une moindre mesure, de faire la même chose dans ce cas là.
Quoi qu'il en soit, je me concentre sur ce sujet pour l'instant et vous ferai parvenir les informations très prochainement.
C'est totalement WTF !! Rien que l'import / export c'est tellement un truc de malade, ça révolutionne le jeu mais totalement. Mais dans la partie pour le transfert du prefab, il est possible et faisable d'incorporer une fonction "dupliquer" ? Une fois un véhicule fait, le multiplier pour chaque joueur du serveur ?
En tout cas, bon boulot.
Vivement que le monde entier puisse en profiter !!
GG à toi.
Tout d'abord, grand merci à toi et tu n'as pas encore tout vu
Ensuite pour te répondre, une fonction dupliquer en soi est très simple à implémenter car il s'agit ni plus ni moins d'exporter/importer le prefab sur la même map. Une fois exporté, on peut l'importer autant de fois que l'on veut.
Dans ce sens, j'encourage fortement l'utilisation de la fonction export, ça permettra de sauvegarder un véhicule par exemple, alors que la fonction dupliquer, si implémentée, n'est en fait qu'un prefab exporté qui serait supprimé par la suite.
Si seulement tes idées pouvaient être reprises par Axolot. Quand chacun joue sur sa map, fabrique un bon véhicule mais bloqué sur une map. Ça permettra de regrouper tout le travail propre sur une vraie map !
Est-il possible via ton éditeur qui limite deviendrait un toolkit vu les options très intéressantes d'intégrer d'autres choses ? Comme une gestion de mod (quand ils seront plus nombreux).
Encore une fois, GG, gros GG même
Pages