Developing a Multi-Platform Network Game Marie SAADEH – INF1495

Preview:

Citation preview

Developing a Multi-Platform Network Game

Marie SAADEH – INF1495

Plan

• Problématique et objectif(s) du projet:▫Description du jeu.▫Ressources demandées.▫Difficultés et solutions.

• Analyse et conception:▫Structure d’un jeu.▫Diagramme de classes▫Outils employés▫Support Network

• Valeurs ajoutées.

• Démonstration.

Problématique et objectif(s) du projet

Problématique et objectif(s) du projet:Description du jeu:

• Type de Jeu: Jeu de combat 3D• Nombre de joueurs: 2• Caractéristiques: Support Network local, Développement

multiplateformes (PC et XBOX 360).

Problématique et objectif(s) du projet:

Ressources demandées.

•Un jeu 3D nécessite la présence des ressources suivantes:

- Modèles 3D: caractères et environnement.- Animations des caractères (walk, punch…)- Framework d’intégration des modèles et des animations (XNA, DarkBasic, Game Maker…).- Codage de la logique du jeu.

Problématique et objectif(s) du projet:

Difficultés et solutions.

•Un jeu 3D moderne nécessite une équipe de modelling, d’animations, de programmation… (50 à 70 personnes…).

•Solution: importer des modèles existants, et générer uniquement les animations. De plus, choisir un jeu non-complexe au niveau programmation (Combat).

Analyse et conception

Analyse et conception

Structure d’un jeu.

• La structure générale d’un jeu est la suivante:

▫Définition des variables▫Chargement de ressources (modeles, images…)▫Initialisation (Constructeur)▫Boucle Update (Logique du jeu)▫Boucle Draw

Analyse et conception Diagramme de Classes

Analyse et conception

•Outils employés:

▫3D Studio Max 2011: Importation des modeles 3D. Génération des animations. Exportation en un format .X (compatible avec XNA).

▫XNA Game Studio 4.0: Importation des ressources. Génération des classes et intégration des librairies. Codage et implémentation.

Analyse et conception

•Pourquoi XNA?

▫Représente un Environment de développement riche, par intégration dans Visual Studio.

▫Support un développement multiplatformes (PC, XBOX, Mobile…) en utilisant un code commun.

▫Offre plusieurs fonctionnalités utiles pour le développement 3D (Cameras, Network…).

Analyse et conceptionSupport Network

Valeurs Ajoutées

Valeurs Ajoutées

•Support multiplateforme (PC et XBOX 360):

▫Déploiement sur XBOX 360 en ajoutant uniquement du code relatif aux controlleurs (GamePads).

Développement et prototypage

1. Importation des modèles dans 3D MAX

•Insérer un disque de jeu “XBOX 360” basé sur le moteur Unreal Engine .

•Créer une image ISO en utilisant le programme S360X.

Développement et prototypage

1. Importation des modèles dans 3D MAX

Développement et prototypage

1. Importation des modèles dans 3D MAX

•Utiliser wx360 pour extraire les «modèles comprimés en format .XXX:

▫Choisir l’image « ISO » créé par S360X▫Naviguer au répertoire Asset et faire

export du fichier convenable.

Développement et prototypage

1. Importation des modèles dans 3D MAX

Développement et prototypage

1. Importation des modèles dans 3D MAX

Développement et prototypage

1. Importation des modèles dans 3D MAX

▫Extraire le fichier sélectionné par l’utilitaire umodel.

▫Ecrire la commande suivante dans ‘command prompt’ pour extraire le  modèle 3D (.PSK) et les  textures :

umodel –export –noanim char_catwoman.xxx

Développement et prototypage

1. Importation des modèles dans 3D MAX

▫Le fichier ‘CHAR_Catwoman’ est créé dans le même directoire que Umodel.

▫Le fichier ‘CHAR_Catwoman’ contient deux répertoires importants :

SkeletalMesh : contient le modèle PSK qui sera importé dans 3DS MAX.

Texture2D : contient les  ‘textures’.

Développement et prototypage

1. Importation des modèles dans 3D MAX

▫Dans 3DS MAX, utiliser le « ActorX Importer » pour importer le modèle PSK

▫Il est nécessaire d’assigner le « materials path » au fichier du caractère.

Développement et prototypage

1. Importation des modèles dans 3D MAX

Développement et prototypage1. Importation des modèles dans 3D

MAX

Développement et prototypage

1. Importation des modèles dans 3D MAX

Configurer les « textures » du caractère avant de l’exporter en format .X (DirectX).

Développement et prototypage

1. Importation des modèles dans 3D MAX

Résultat:

Développement et prototypage

1. Importation des modèles dans 3D MAXArchitecture de l’environnement:

Valeurs AjoutéesAnimation des caractères dans 3D MAX

Valeurs AjoutéesAnimation des caractères dans 3D MAX

Valeurs AjoutéesAnimation des caractères dans 3D MAX

Walking:

Valeurs AjoutéesAnimation des caractères dans 3D MAX 

Punching

Valeurs AjoutéesAnimation des caractères dans 3D MAX 

Kicking

Développement et prototypage

4. Importer les modèles dans XNA

▫ Diviser le caractère en des sous-parties (car XNA supporte au maximum 80 Bones) et les exporter en formats .X en utilisant “Panda DirectX Exporter”.

Développement et prototypage

4. Importer les modèles dans XNA

Développement et prototypage

4. Importer les modèles dans XNA

protected override void LoadContent() { // Create a new SpriteBatch, which can be used to draw textures. spriteBatch = new SpriteBatch(GraphicsDevice); // TODO: use this.Content to load your game content here //define two fighters, catwoman and batman, and load their models

Fighter catwoman = new Fighter(Content, new string[] { "catwoman/catwoman_left", "catwoman/catwoman_right" }, new string[] { "catwoman/catwoman_diff", "catwoman/catwoman_spec", "catwoman/catwoman_normhqa" }, -100);

catwoman.LoadSkinnedModel();

Fighter batman = new Fighter(Content, new string[] { "batman/batman_left", "batman/batman_right", "batman/batman_cape" }, new string[] { "batman/batman_diff", "batman/batman_spec", "batman/batman_normhqa" }, 100);

batman.LoadSkinnedModel();

//add catwoman and batman to the fighters table fighters = new Fighter[2]; fighters[0] = catwoman; fighters[1] = batman; }

Démonstration

Développement et prototypage

4. Importer les modèles dans XNA

public void drawMesh() { foreach (SkinnedModelMesh modelMesh in skinnedModel.Meshes) { //specify the model position and rotation

modelMesh.Effect.World =

Matrix.Identity * Matrix.CreateRotationY((float)Math.PI * parent.rotation) * Matrix.CreateTranslation(parent.translation, 0, 0);

Développement et prototypage

4. Importer les modèles dans XNA

public void update(GameTime gameTime) {

//add the rotation value rotation += 0.01f;

//update the model parts

foreach (FighterMesh mesh in meshes) { mesh.update(gameTime); } }

DémonstrationImporter les modèles dans XNA

Développement et prototypage

5. Intégration du logique du jeu

public void walkForward() { if (getAnimation("Stand")) { setAnimationLoop("walk", false, 50); } }

public void crouch() { if (getAnimation("Stand") || getAnimation("walk")) { setAnimation("crouch", false, 50); } }

public void HP() { if (getAnimation("Stand") || getAnimation("walk")) { setAnimation("hp", false, 50); } }

DémonstrationIntégration de la logique du jeu

Démonstration6. Module Menu

Démonstration7. Intégration du menu et Ajout de l’environnement

Démonstration8. Support Network

Merci pour votre attention

Recommended