jeudi 23 juin 2016

AGE : Agk Game Editor 3D, un éditeur de jeu pour AGK


AGE : Agk Game Editor


 Mise à jour : 24/06/2016


Introduction

Dernièrement, j'ai pas mal regardé ce qui se faisait niveau éditeur de jeu 3D, et j'en ai testé quelques uns (voir les post précédents).
Certains ne tournaient pas sur ma machine (petite config), d'autres étaient beaucoup trop cher. Et quand à unity (la référence) et bien impossible de le lancer sur ma machine (l'application reste bloquée sur un écran d'accueil tout noir, mais ça vient de ma machine car je ne parviens pas à installer VS 2015, à cause de windows update qui semble ne pas bien fonctionner...).

Bref, après avoir testé tous ces éditeurs, je me suis rappelé qu'en 2014 j'avais commencé une lib pour AGK (Lib AGK Gui (LAG ou LaGui)) permettant de concevoir facilement des interfaces pour application PC.
Cette lib ajoutait notamment :
- des gadgets (ou widgets) : trackbar, string, bouton, checkbox, panel...
- la possibilité de créer un menu et des menu-item (fichier/edition...)

En novembre 2015, lorsque j'ai testé la 3D avec AGK, j'ai aussi commencé à élaborer un petit éditeur 3D pour concevoir mes niveaux, pour mes jeux. Mais cet éditeur n'avait aucune interfaces et ne permettaient que quelques transformations d'objets (position, rotation, scale..)

Ainsi, j'ai repris cet éditeur et j'y ai ajouté ma lib LAG (que j'ai d'ailleurs améliorée grandement au passage), histoire d'avoir une interface plus facile à manipuler ^^.
Et depuis début juin, j'ajoute régulièrement des fonctions à cet éditeur qui commence à être plutôt intéressant.

Les avantages
- il est conçu avec AGK, donc j'aurai exactement les mêmes résultats dans mes jeux.
- c'est beaucoup plus facile de concevoir des niveaux ainsi, les niveaux sont d'ailleurs bien plus beaux, plus intéressants, etc..
- on peut voir immédiatement le FPS en testant le jeu, ce qui permet d'optimiser réellement le jeu.
- je peux ajouter les fonctions que je souhaite (enfin, si j'arrive à les coder ^^).
- comme AGK, il tourne sur des très petites configurations, et j'ai ajouté plusieurs options pour l'optimisation.



Vidéos 




Screenshots

Quelques screenshots des versions développées avec plus d'informations sur le contenu de chaque version :

Version 0.31  :
 - Ajout attribut physic à certains objets (3 types de physic sont disponibles)


Version 0.30  :
- nouveau shader de terrain qui gère 4 textures en fonction de la hauteur du relief
- import model 3D : désormais, j'ouvre toutes les images du model (stage 0 à 7) ainsi que le shader utilisé pour le model.
- possibilité de bouger ou tourner les objets selon l'orientation global ou local
- Load /save preset bank : permet de charger une banque de modèles + images
- réorganisation de l'interface (les gadgets liés aux shaders/ images se trouvent maintenant dans le panneau image), je mettrais bientôt en place le "shader editor", un gros morceau (je ne sais pas si j'y parviendrai, on verra :)).


 Le shader de terrain : 




Version 0.28 & 0.29 :
-  on peut modifier certains paramètres d'objets via le menu edit/set object parameters. Par exemple, on peut décaler de 50 les objets sélectionner en X, activer ou désactiver les ombres des ombres, etc...
- pas mal de corrections de bugs.
- shift + clic sur objet : permet de sélectionner OU déselectionner un objet 
- quelques modifications dans l'interface (gestion souris à la blender par exemple avec alt, ctrl, etc...), camera centrée sur l'objet sélectionné, reset view/view selected, view center...
- correction de bugs lié à l'objet water 
 
J'ai testé la création d'un level avec l'ensemble des fonctions disponibles. C'est très agréable et ça va assez vite pour concevoir le niveau :). En mode jeu, j'ai 30fps (en 1650*1080), soit le maximum, car ça correspond à 60 FPS en 1024*768 (mon PC est vraiment très faible ;)).





J'ai aussi créé de nouveaux objets pour tester mon éditeur, et exporter d'anciens modèles3D (comme Iceman sur le screenshot, qui est plutôt sympathique :))





Version 0.26 & 0.27 :
- ajout de quelques comportements (rotation automatique en X,Y,Z, locale désormais)
- test : gestion de plusieurs textures sur un mesh via une image colorkey (pratique pour les terrains ou pour certains effets comme les textures lumineuses uniquement pour certains paramètres)
- test pour le lightmap pour avoir des ombres en vue autre que viewtop (mais ma technique ne permet pas d'avoir des ombres crédibles dans une autre vue,hélas. je dois trouver comment faire du shadow mapping avec AGK, mais je sais pas encore comment faire ça^^)

Version 0.24 & 0.25 : 
- ajout d'un lightmapper : c'est loin d'être complet ni parfait, mais ça fonctionne à peu près.
- soft shadows dynamiques (idem)
- panneau lightmap, pour gérer divers paramètres du lightmap (couleur des ombres, transparences, softshadow..)
- stringgadget uvscale et offset sont désormais liés au canal de texture courrant (appelé stage dans AGK - SetObjectImage(objid,texture,stage))

ici, je montre la version 0.28, mais c'est pour voir les ombres dynamiques ;)




Version 0.23 : 
-  load /save atmosphere presets, object transparency


Version 0.22 : 
- ajout des comportements (behaviors) : ce sont des petits comportements simples pour les objets, comme rotation automatique autour d'un axe 
- ajout de fenêtre à LaGui (je peux donc gérer des fenêtres comme terrain editor, shader editor, etc...)


 Version 0.18 à 0.21 : beaucoup de changements^(amélioration, ajout, corrections de bugs), mais peu de screenshots ^^.
- Multi-sélection et transformation d'objet
- list-icon améliorée (on peut bouger cette liste pour accéder à toutes les icones (par exemple les modèles en bas de la liste ^^)
- tooltips des gadgets
- object : freeze/unfreeze, hide/unhide
- les models animés ont désormais leur animation qui peut être jouée
- nouvelle fenêtre openfile (gère les dossiers et actualise les fichiers si on clique sur un dossier)
- mode test jeu : quand on clique sur le boutons play, on lance le jeu, en cachant l'interface de l'éditeur. On est donc en mode jeu et on teste le jeu comme si on jouait réellement, avec le fps réel du jeu.
- zoom avec molette de la souris, touche Tab cache ou montre l'interface (comme le mode jeu, mais graphiquement uniquement, on peut continuer à utiliser l'éditeur avec les raccourcis.


Version 0.17 : 
- sun intensity, ajout des terrain (heightmap), on peut changer un shader d'un objet, savedoc/loaddoc opérationnel...


 save/load doc :



Terrain crée par heightmap (fonction AGK)

Test de mes modèles avec un shader type rim-light.



Test de l'objet "water" (ajouté à la 0.14), shader by Janbo ! Merci à lui ;) 
Les artefacts sont liés au fait que je n'ai pas modifié les shaders des objets pour qu'ils soient bien pris en compte par l'eau.





Version 0.16 : 
- import model3D
Ici, j'ai testé l'importation de certains de mes modèles 3D (puf, mister boog, Jim galactik...)






Version 0.13 : 
- ajout de l'atmosphère paramétrable (active ou non, etc..)




Version 0.12 : 
- ajout de light, texture uv scale...
 




Version 0.10 :
- interface générale, menu, création d'objet géométrie (sphere, plan, box,cone, cylindre), avec texture, transformation d'objet simple (position, rotation, scale) 





Fonctions disponibles :
- Create :  Objet géométrie (plane, box, sphere,cylindre, cone, capsule), model 3D importé (format géré par AGK (x,obj,b3D,dae...) + le format géré par GameGuru( *.fpe), lights, terrain (heightmap pour le moment), water (1 plane uniquement pour le moment)
- Transformation : position, scale, rotation, couleur émissive (=emit de blender),hide, locked, shadow (pour le lightmapper que je suis en train d'essayer de coder + ombre dynamic (Top view uniquement)
- Edition : copier/coller, cloner, changer des paramètres sur les objets sélectionnés
- sélection : tout, sélectionner par son nom l'objet.
- Options : lock X,Y,Z
- Atmosphere: Skybox, Sun, Fog, ambient (on peut modifier la plupart des paramètres disponibles) + save/load atmosphere presets
- Lights : création, suppression, modification (couleur, intensité, position, range...)
- Shaders: on peut ajouter et gérer nos shaders. Pour le moment, j'ai ajouter quelques shaders basiques (add, sub, multi, terrain avec shadowmap, reflection envmap).
- Banque d'image et banque de modèle : on peut charger un modèle 3D, et ensuite le modifier (position, scale, etc..), ainsi que changer de shader + ses textures
- File : save/Load document, save/open bank preset






Aucun commentaire:

Enregistrer un commentaire

Merci de poster des messages sympa ou hyper sympa (et pas violent, tout ça, parce que c'est pas glup). :)