Revue de sujet
SEB Posté le 11 Sep 2011 à 14:33
Avatar de SEB
Messages : 554
Oui tout dépend ce ce qu'on souhaite faire. Pour le moment tu peux regarder l'éditeur mais il ne sera pas poursuivi 'tel que' je pense le revoir aussi un petit peu des que le moteur aura ré-atteind le même niveau que le précédent.

Il y a les deux optiques effectivement soit jade est 'intégré au moteur comme une sorte de langage de script compilé' donc c'est le moteur qui se lance puis utilise Jade, soit Jade est le langage.. et on peut lui accrocher la lib NextGine. Pour moi les deux approches sont tentantes et tout autant faisables. Donc après ce qui est important c'est de savoir ce que tu souhaite pour Jade. Ensuite il faudra définir plus concrètement l'ensemble des fonctions nécessaires et jusqu'à quel niveau d'accès on ouvre les choses.
Mod Posté le 11 Sep 2011 à 11:20
Avatar de Mod
Messages : 4954
Ah, des nouvelles :)

De mon côté, il y a trois possibilités :
- devoir écrire tout le code d'initialisation à la main,
- écrire ce code dans le wrapper du .lib, code qui sera exécuté au chargement de l'appli, et donc invisible pour l'utilisateur
- écrire dans les .lib un main, WinMain, etc, contenant le code d'initialisation, et appeler à l'intérieur une fonction avec un nom donné. Côté Jade, le compilateur peut remplacer l'entry point par ce nom. C'est ainsi que fonctionne le wrapper DarkGDK, d'ailleurs.

Et du coup ça me faisait qu'il faudrait que je retente le téléchargement de QT, qui était down précédemment.
SEB Posté le 09 Sep 2011 à 11:52
Avatar de SEB
Messages : 554
Hello hello,

Je profite du fait qu'aujourd'hui je n'ai accès à aucun logiciel de dev ou autre pour vous annoncer que NextGine est (une nouvelle fois c'est peut-etre un peu mon défaut... nous verrons bien) en train de se payer une refonte.
Ce qui concrètement donne lieu à ce qu'on pourrait appeler un début de NextGine 2 l'historique de la vie de ce moteur étant la suivante :

    2005/2006 (Licence 2) => Premier moteur OpenGL (sans nom) intégré à une fenetre Qt compatible linux et windows capable uniquement de gérer de petits modèles statiques texturés une fois avec des image bitmap et un rendu DisplayList.

    2006/2007 (Licence 3) => Second moteur OpenGL revu et restructuré(et au passage nommé TroisD) pour le projet 'Follow the beaver' il intègre en plus le mip maping, les modèles animés (format .3ds) et les vertex array et VBO. (assez mal mais tout de même ^^)

    2007/2009 (Master 1 et 2) => TroisD est intégré dans un moteur comportant plus de module (core, physique, network, son) nommé le PTC engine (découlant du nom du projet Perfect Tactical Combat) petit moteur de RTS.

    Ete 2009 (Fin de stage Master 2) => TroisD étant trop vieux et les études touchant à leur fin je décide de refondre TroisD en NextGine et de le détacher du projet PTC car trop de vieux codes l'empèchait d'évoluer normalement. Cette première version de NextGine fait la place plus large à une meilleure gestion du graphe de scène, à l'intégration de threading et surtout au fait d'être multi-renderer tout en perdant un peu son aspect portable, devenant ainsi assez spécifique Windows.

    Debut 2011 => Tentative de création d'un middle-ware de création de jeu autour de NextGine faisant apparaitre de grosses failles dans la gestion de divers types de ressource, en effet NextGine avait été concu de manière à être cappable de charger plusieurs format de fichiers de modèle, cependant ce n'est pas très pratique quand on fonctionne avec un middleware de création car il est bien plus pratique d'uniformiser les format afin d'en simplifier la gestion.


DONC :

Spoiler - Cliquez pour afficher
Septembre 2011 => NextGine 2 est en train de montrer le bout de son nez. Tout à été repris de quasi 0. Et notamment la gestion de la mémoire qui malgré quelques allocateurs et progrès dans NextGine possédait une syntaxe complètement folle, de même pour la gestion des chaines de caractère et des logs. Ainsi qu'une nouvelle conception toute neuve quand à la gestion des ressources graphiques et des types de nodes du graphe de scène. L'orientation multi-plateforme à également été reprise à 100% et elle vise cette fois à être à 100% portable (dans son développement actuel elle est validée sur Windows sup à XP, Linux (Ubuntu 10.xxx Fedora 15 (si je dis pas de bétises)), MacOsX (intel), Et incessament sous peu elle sera validée sous Android et iOs.


Au niveau de l'organisation de base elle conserve quand même un découpage relativement similaire :

    Une lib Core (Terminee) => Types de base, collections, chaines, fichiers et système de fichiers (pack, zip...), Debug (logs, allocateurs, (pas de profiler car tous les ide en proposent quasiment a l'heure actuelle)), Gestion de la mémoire par surcharge des new/delete, Threads, gestion du temps, Vecteurs et matrices

    Une lib App (Terminee) => Gestion d'une classe d'application (surtout inspirée du fait que sous MacOs et iOs c'est le point d'entré de base et que ce n'est pas difficile à adapter vers windows, linux) et gestion de fenètres et récepteurs d'évènements.

    Une lib Graphic (Sur le début) => Gestion des ressources graphiques sur une base streamée (modèles, textures, shadders, matériaux, fonts), gestion du graphe de scène, gestion des 3 modes de rendu (FFP, ForwardShadding et DefferedShadding), 8 Renderer (Null, Software, OpenGL, OpenGL-ES, DirectX9-10-11, Skirt (ray tracing))


Des que le moteur graphique sera disponible j'essaierais de voir avec toi Mod comment te fournir une lib avec des fonctions graphiques de base pour Jade.

Ca serait sympa que nous nous mettions d'accord sur les fonctions qui pourraient être nécessaire à une démo de base.

Doit il y avoir une gestion 'un peu avancée' du genre

Code : C
NextGineOpen()
 
NextGineCreateGraphics(1024,768,true) // true pour fullscreen
 
NextGineCreateCamera(position, near, far, etc...)
 
NextGineLoadModel("model.obj")
 
NextGineClose()
 


Ou doit on rester dans du simplissime à la DarkBasic (pas de gestion de la lib, la fenetre s'ouvre seule... et on a juste un truc genre)

Code : C
idModel = LoadModel("model.obj")


et les configurations de caméra, fenêtres sont 'par default'

SEB Posté le 24 Août 2011 à 22:01
Avatar de SEB
Messages : 554
Oui en fait tout ce que tu me rapporte est un comportement normal. Le Bomb03 est un export du projet qui a été créé via l'éditeur. Donc oui son comportement est actuellement uniquement de créer et afficher la map.

Oui j'aurais du mettre Qt avec désolé :/

Et le log warning défois je l'utilise mal... XD c'est pour mieux le repérer dans le tas des logs. Donc aparemment aucun probleme ^^ !
Mod Posté le 24 Août 2011 à 21:19
Avatar de Mod
Messages : 4954
Alors malheureusement, n'ayant pas QT d'installé je ne peux pas lancer l'éditeur (erreur de dll qt4core manquante). Je suis en train de télécharger ça, mais l'information pourra servir pour plus tard.

J'ai du coup exploré un peu les fichiers et lancé l'exe Bomb03, qui affiche la map bien typée Bomberman mais rien d'autre (normal ou non ?).

La console boucle sur ceci :

Code :
Update the dynamic element by time
Updating a dynamic element
This element is visible


Et parmi les logs générés (jolie mise en forme pour la version HTML d'ailleurs :p) se trouve ceci :

Code :
INFO - CreateScriptLibrary.cpp => nxtMessage : Init
INFO - DefaultFramework.cpp => init : Parametre de rendu normaux
INFO - DefaultFramework.cpp => loadingCallback : Ouverture du fichier de scene
INFO - DefaultFramework.cpp => loadingCallback : Fichier xml bien lu
INFO - CreateScriptLibrary.cpp => nxtMessage : Light ok
WARN - TBNComputer.cpp => treat : Computing TBN for quads mesh
WARN - CubeSceneNode.cpp => CubeSceneNode : Tangent binormal after treatment is ok
INFO - CreateScriptLibrary.cpp => nxtMessage : Materiau n'existe pas deja
INFO - CreateScriptLibrary.cpp => nxtMessage : Materiau n'existe pas deja
INFO - CreateScriptLibrary.cpp => nxtMessage : Materiau n'existe pas deja
INFO - CreateScriptLibrary.cpp => nxtMessage : Update


Voilou, je dis quoi dès que j'aurais pu tester l'éditeur.
SEB Posté le 24 Août 2011 à 16:54
Avatar de SEB
Messages : 554
Ok je tenterais de te fournir une lib d'ici quelque temps.

En attendant voila une nouvelle version de l'Editeur NextGine

c'est une version un peu buggée et cela manque pas mal d’intuitivité mais j'ai essayé d'avancer au maximum dans l'optique d'etre capable de réaliser un premier jeu le plus vite possible.

Je fourni un projet exemple avec qui crée une petite scène de bomberman toute basique avec des cubes.
Il est également possible de publier le projet en executable final.

voila je vous laisse vous amuser un peu le fichier est compressé en 7Z

http://www.mediafire.com/?kzofa716joa8yyj

J'attend toutes critique constructive !
Mod Posté le 23 Août 2011 à 22:47
Avatar de Mod
Messages : 4954
Ah, je suis effectivement bien curieux de voir l'éditeur de jeu, c'est un domaine qui m'intéresse.

Sinon, fichier .lib, ça me convient parfaitement ^^. Jade utilise actuellement ce format de fichier, et non pas (plus depuis un moment) les DLL.
SEB Posté le 23 Août 2011 à 18:59
Avatar de SEB
Messages : 554
Hello Hello.

Alors concernant NextGine il y a eu effectivement de l'évolution, étant donné que j'ai commencer à construire un éditeur de jeu basé sur Qt autour de mon moteur. Cela m'a permi d'apprendre des tas de choses et de me rendre compte de certains soucis présent dans le moteur pour un faire une utilisation concrète.

NextGine se compose donc actuellement de plusieurs 'morceau', plus ou moins indépendants.

Le moteur complet et quelques outils.

Le moteur comporte les modules suivant :
NextGine
==> Core
------ (Element de base, collections, logs, threads, filesystem, xml, zipper, criptor, system informations etc...)
==> AI
------ (système de scripting, machine a etat, mini CSP solver)
==> Graphic
------ (Moteur graphique, gestion de scène nodes et de chaine de rendu, optimisation de mesh etc.., rendu de police etc..)
==> GuiSystem
------ (Moteur de gui entièrement abstrait permettant de créer des implémentation aussi bien en Win32 qu'en X11 ou Cocoa ou bien meme encore dans le moteur NextGine)
==> ImageLoading
------ (Toute une liste de loaders d'image, BMP, ICO, DDS, JPG, PCX, PNG, PPM, TGA)
==> Math
------ (Librairie regrouppant tous les element mathématiques vecteur,matrice,quat ainsi que les optimisations SSE et une couche abstraite pour faire des calcul parallèle basé sur des kernel openCL ou software)
==> ModelLoading
------ (Toute une liste de loader de model 3D, 3DS, ASE, BSP, MD2, MD3, OBJ, OFF, STL)
==> Network
------ (Des element de reseau)
==> NextGine
------ (Une lib regrouppant tout cela et fournissant une interface scriptable)
==> Physic
------ (Un début de moteur physique)
==> Renderer
------ (3 renderer de rasterisation OpenGL, DirectX9 et 10 et un renderer en ray tracing experimental)
==> Scripting
------ (Plusieurs interface ver des langages de script : LUA, Javascript, Python, Lisp)
==> Sound
------ (Un module de son de base interfacé avec OpenAL et/ou DirectSound lisant des fichier WAV uniquement pour le moment)

Tous ces modules sont dépendant du module Core et Math.

Tout ceci est actuellement compilé en lib statique et il me serait difficile maintenant de fournir une lib dynamique sur chacun de ces modules, cependant ce que je peux faire c'est créer une version dll du module NextGine qui exporteraient les fonctions que je bind actuellement sur les système de script. Et Ainsi pouvoir utiliser le moteur de la meme facon que ce que je le fourni à mon système de script.


Au niveau des outils il en existe 3 :
Un packager/dépackager permettant de créer, ouvrir des archives nextgine
Un environnement de création de jeu en Qt, permettant de gérer des projet, des scènes, des textures, des scripts et enfin de publier les jeux.
Un serveur de travail collaboratif avec une mini interface en Qt auquel peut se connecter l'éditeur afin de pouvoir avoir un système de versionning adapté aux jeux et aux assets qu'on y trouve. (Serveur en cour d'expérimentation)


Je vais essayer de vous mettre en ligne la dernière version de l'éditeur même si elle n'est pas parfaite. Et si tu es intéressé par le fait que je crée une dll comme je l'ai dit j'essayerais de te faire cela Mod.
Mod Posté le 23 Août 2011 à 18:03
Avatar de Mod
Messages : 4954
Yop là, je viens aux news concernant NextGine. Quoi de neuf depuis les dernières infos et le dernier téléchargement (d'ailleurs down) ?


J'essaie d'adapter des bibliothèques/moteurs/framework pour Jade afin d'en tester la compatibilité, et comme j'avais déjà pu le dire dans ce sujet, je serais bien tenté par ce projet :).
SEB Posté le 26 Déc 2010 à 19:13
Avatar de SEB
Messages : 554
Oui je pense mettre une boucle par defaut dans tous les cas. Et je pense que je serais obligé de restreindre forcément les possibilité dans l'optique de faire du step by step dans l'éditeur... enfin je vais y réfléchir. Niveau capacités 3D pour le moment mon moteur n'est pas un foudre de guerre. Il est cappable de charger assez proprement des fichier .obj, des fichier .ase des .md2 avec leur animation. Si je devais faire un liste tres rapide des choses positives existantes et des choses cruciales qui manquent.


Elements existants :
- Chargement de modèles .obj(avec materiaux), .ase(avec materiaux), .md2(avec materiaux et animation), .bsp(avec materiaux simples, sans tenir compte du tri BSP pour le moment)
- Large plage de renderer (OpenGL, DirectX9, DirectX10, Ray tracing (experimental non exploitable en l'état))
- Large adaptabilité au niveau des plateformes (de tres petites machines vers les plus puissantes) le tout basé sur les mêmes assets.
- Eclairage directionnel et point par vertex ou par pixel.

Element manquant cruciaux :
- Ombrage (shadow map)
- NormalMaping
- Systeme de colision de base
- Animation squelettale

Pour les performances elles sont actuellement correcte (voir les benchmarks précédents) sans etres exceptionnelles.

Darktib Posté le 26 Déc 2010 à 14:07
Avatar de Darktib
Messages : 4017
Intéressant comme optique... Est-ce que tu inclura une boucle par défaut - si le scripteur n'a pas envie de recoder la boucle ?
Et sinon niveau capacités 3D, que peut faire ton moteur ?
SEB Posté le 26 Déc 2010 à 10:49
Avatar de SEB
Messages : 554
Lol je viens d'essayer de tester l'udk mais mon logiciel a moi a déja un avantage par rapport à lui c'est qu'il se lance sur ma machine XD donc je testerai l'udk sur une machine qui le supporte des que j'en aurais l'occasion. Ensuite tous les problème du middleware (auquel je me confronte actuellement) c'est de savoir jusqu'a quel niveau on laisse le contrôle au scripteur/level-designer et autres intervenants sur la boucle principale du jeu.

Je vais entrer un peu dans le détail comme ca si le débat intéresse ca pourra etre un sujet de discussion intéresant. Typiquement, actuellement les briques de base sont la possibilité de crééer des scripts et de spécifier un script 'point d'entrée' dans lequel doit se trouver une fonction main qui sera la fonction appelée en tout premier lieu.

Les moteurs que je connais se seraient contentés (d'un point de vue script) de demander a avoir une fonction init/update/shutdown. En clair le moteur contrôle ce qu'il a à faire et appelle le script au moment opportun de l'update. Ceci est tout a fait compréhensible pour des raison de performance et de contrôle de la boucle principale. De plus cette approche permet une utilisation simple du middleware par des 'non programmeur' cependant je me dis qu'il peut y avoir des moment ou l'on voudrait en tant que scripteur pouvoir modifier cette boucle pour des raisons spécifique. J'ai donc pensé laisser la possibilité au scripteur de gérer lui meme la boucle principale.

Je suis donc parti dans l'optique de proposer une fonction définissant le 'framework' utilisé par le moteur. Ce framework pourra etre un framework classique géré entièrement en c++ mais pourra également etre substitué par un framework définit en script.

typiquement le main pourra se présenter ainsi :

Code : C++
function main()
  local framework = InitUpdateShutdownFramework.new("Framework.py");
  nxt.engine.setFramework(framework);
  nxt.engine.run();
end
 


ou encore

Code : C++
function main()
  local framework = GenericMonothreadedFramework.new("InitialSceneName");
  nxt.engine.setFramework(framework);
  nxt.engine.run();
end
 


ou tout autre classe de framework

(attention les fonctionnalités décrites ici sont en cours de développement mais non intégrée dans la version téléchargeable)
stilobique Posté le 26 Déc 2010 à 00:24
Avatar de stilobique
Messages : 2387
Chalut... j'ai pas tout compris mais c'est cool ^^
SEB Posté le 25 Déc 2010 à 10:04
Avatar de SEB
Messages : 554
Pour etre honnête non je ne me suis pas encore inspiré de l'UDK mais pluto des trois moteurs que je connais actuellement à savoir Shiva, Virtools et Unigine (j'avais survolé unity mais trop peu pour pouvoir y piocher des éléments intéressants) Mais je vais imédiatement remédier à cela et jetter un oeil au fameux UDK :D


(Ce n'est pas bien grave de ne pas tester cette version je l'ai mise parceque j'était content d'avoir le systeme principal en place mais il n'y a rien d'exceptionnel qui vaille a tout prix de le tester cette fois ci.)

Merci encore et joyeux noel aussi
Darktib Posté le 24 Déc 2010 à 21:55
Avatar de Darktib
Messages : 4017
Type middleware, inspiré par l'UDK ? ^^

J'aurais bien aimé tester, mais le débit est très bas... Si tu cherches des hébergeurs, il y a Mediafire (qui ne m'a personnellement jamais déçu).

En tout cas, bonnes fêtes et bonne continuation!
SEB Posté le 24 Déc 2010 à 10:04
Avatar de SEB
Messages : 554
Salut salut a tous, c'est noel et comme nous le voyons les productions perso profitent de ces quelques jours de pause ce qui est plutot sympa.
Ceci est également valable de mon coté puisque j'ai décidé de ne plus continuer a développer mon moteur comme cela a l'inspiration mais plutot dans une optique ou je le pense orienté vers un éditeur type middleware. (Et cela change pas mal de choses)

Je vous poste donc une toute premiere mouture extrèmement light de cet éditeur qui est basé sur mon moteur pour la partie 'engine' et sur Qt pour l'interface graphique. Malgré le peu de fonctionalités encore, l'installeur est assez lourd car compilé en débug avec MinGW ce qui donne assez souvent des binaires assez lourd. Je n'ai pas encore d'exemple extraordinaire a montrer sur cet éditeur mais simplement le process de 'création->édition->publication' de base est en place et permet de réaliser un premier 'hello world' dont vous trouverez le tutoriel dans le menu help.

En espèrant une fois de plus que je n'aurais pas oublié de dll.


voila le lien pour tester :

http://filebeam.com/download.php?file=59b16e9026bff06e2909f34659c6855e

Et bonne fetes a tous au passage.

ps : en tout cas c'est sympa de voir que les éditeurs vont bon trains sur game corp (je pense a game develop et a l'éditeur spark qui sont de tres beau projets)
stilobique Posté le 09 Mai 2010 à 18:16
Avatar de stilobique
Messages : 2387
Waou, pas mal de travail abattu ! Je t'en félicite, de plus l'intégration d'un moteur type ray tracing doit pas être simple à mettre en place pour que se dernier soit jouable en temps réel ; donc encore bravo :proud:
SEB Posté le 09 Mai 2010 à 16:43
Avatar de SEB
Messages : 554
Quelques nouvelles de NextGine :) Beaucoup de choses se sont passées depuis mon dernier post. En effet, un point faible m'a interpelé dans mon moteur ainsi qu'une envie particulière du point de vue graphique. Je peux donc annoncer que j'ai enfin (après pas mal de galères stupides) réussi à intégrer directx10 à mon moteur (je pense poster bientôt les deux benchmark avec directx10 activé (avec détection automatique de la capacité à le faire) mais j'ai surtout travaillé au développement d'une surcouche générique pour l'intégration de Cuda, OpenCL, ainsi qu'une dérivation software d'une architecture en Stream Processing. Ceci m'a permi de commencer ce que je souhaitais c'est à dire tenter dimplémenter un début de renderer Ray Tracing que je voudrais à terme pouvoir utiliser dans un cadre temps réel. Les premiers essais montre qu'il sera compliqué d'avoir un rendu temps réel immédiatement mais le défi me plait et je posterais peut-etre (pas sur) une version toute bête de ray tracing temps réel (carte graphique next gen conseillée bien que mon système software permette tout de même de lancer sur nimporte quel plateforme).

Ceci concerne l'aspect graphique, pour le coté 'éditeur' du moteur j'ai commencé la réalisation de mon propre système de gui dont la conception s'inspire d'un Qt sur les grandes lignes mais dont le point le plus important est qu'il sera autant utilisable comme système de GUI interne au moteur qu'en tant que système de gui externe 'windows', linux... en gros il ajoute une forme de 'contexte' pour la séparation du traitement des message mais aussi pour etre facilement intégrable dans la boucle d'un jeu que pour etre le main d'un système de gui et de spécialisation de renderer (comme pourrais le faire un CEGUI par exemple).

Le troisième point important depuis ce temps est l'intégration toute récente d'un système avancé de scripting dont les aspects principaux sont a mon avis très intéressants ils repose sur le principe d'un script comme 'contrôleur' d'un objet. En gros le système de script permet tout autant d'utiliser un seul et unique script gérant l'ensemble du jeux. Que l'affectation d'un script au contrôle d'un élément particulier : permettant de laisser au moteur la charge de gérer les temps de mise a jour de chaque update mais aussi de visualiser la conception des acteurs de façon totalement différente. Ce système de script se veut également simple d'utilisation actuellement il ne comporte pas moins de 4 langages possibles dont un en cours d'élaboration et deux dont la potentialité est forte pour l'avenir. Il est donc maintenant possible de scripter en Lua, Python ou Lisp selon les gouts et les compétences de chacun. Evidemment d'un point de vue performance ce n'est surement pas la meilleure idée mais il est même possible d'utiliser ces langages conjointement dans le même jeux. Le quatrième langage en cours d'intégration est un langage de mon inspiration dont la syntaxe est basée sur de l'xml. Je me demande si je ne vais pas intégrer le Java et le Tcl/Tk mais ces langages attendront un peu. La priorité maintenant est à l'intégration du GLSL (pour remplacer CgGL dans le cas ou la machine le supporte). Puis de débuter un moteur de collision permettant ensuite de se promener dans les scènes autrement que en volant librement.

Voila pour les nouvelles j'espère pouvoir vous poster des démonstrations de tout cela le plus rapidement possible.
Darktib Posté le 20 Jan 2010 à 20:37
Avatar de Darktib
Messages : 4017
DX9, 200 fps environ, avec Antialiasing 1x, 1280x1024, plein écran, WinXP, NVidia GeForce 6800, 3Go RAM Sys et 256Mo Ram graphique

Y beaucoup de bugs d'affichage, et des tas de trous dans la carte. Mais bonnes perfs en tout cas
stilobique Posté le 19 Jan 2010 à 11:46
Avatar de stilobique
Messages : 2387
Quelque bug d'affichage, autrement je tourne dans les 300 FPS avec Open GL, pas test avec Directx !
Nouveau message

Large sourire Sourire Veut Langue Absurde Choqué Clin d'oeil Innocent Cool Fier rougissant confus Neutre Etonné Content Triste Douloureux Pathétique Etrange Agacé Colère Tordu Flèche Question Exclamation Rigole Gêné Amoureux Oui No Fou Pleure Pleure de joie Mignon Coup de coeur Hystérique Blasé Ninja Pouffe Stun Suspicieux Incompréhensible
Gras
Italique
Souligné
Barré
Gauche
Centré
Droite
Justifié
Flottant à gauche
Flottant à droite
Lien
Citation
Puce
Spoiler
Wiki
Image
Flash
Youtube


Prévisualisation
GameCorp - Site d'apprentissage et d'entraide à la création de jeux vidéo.
XHTML Valid 1.1 - Page générée en 0.3117 secondes