Forum du jeu de rôle, stratégie et gestion: Vendetta
 
AccueilPortailGalerieFAQRechercherS'enregistrerMembresGroupesConnexion

Partagez | 
 

 La programmation d'Aurora

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Syl
Artisan
Artisan
avatar

Masculin
Nombre de messages : 92
Date d'inscription : 08/03/2014

MessageSujet: La programmation d'Aurora   Mar 28 Avr 2015 - 15:31

Beaucoup d'amateurs de programmation se succèdent sur ce forum. Je pense que cela pourrait intéresser des gens que je vous explique un peu comment est réalisé Aurora.



1) Le mutlithreading.
"Mutlithreading", ce mot barbare signifie qu'Aurora fonctionne avec 2 programmes autonomes. Chacun de ces programmes peut utiliser un processeur différent. L’intérêt : c'est que quand le 2e programme fait des calculs, ça ne ralentit pas le framerate du premier programme.
Dans Aurora, le premier thread gère l'affichage et le 2e gère tout le reste : déplacement des personnages, IAs, collisions, expérience, combat...
Le 1er thread envoie les instructions du joueur : paramètres de la partie, ordres de déplacement, de combat, de construction...
Le 2e thread calcule tout le jeu et n'envoie que des instructions d'affichage : création d'un personnage, déplacement d'un personnage, animations de combat...



Le 2e thread n'envoie pas toutes les instructions, uniquement celles qui concernent le champ de vision du joueur. Si 500 monstres apparaissent à l'autre bout de la carte, les FPS du 1er thread ne ralentiront pas.
Les messages sont stockés en mémoire. Si le champs de vision est modifié, les messages en attente dans le nouveau champs de vision sont transmis. Bien entendu, les messages en double sont triés ou effacés.
C'est grâce à cela que le jeu se charge si rapidement sur de grandes cartes. Par contre, ça ralentit énormément la première fois que l'on dézoom.

Ce qui est génial avec ce système, c'est qu'Aurora est programmé comme un jeu en réseau. Quand j'ajouterai le multijoueur, le 2e joueur ne communiquera qu'avec le 2e thread du serveur et se contentera des informations d'affichage en retour. C'est comme cela que fonctionnent les jeux vidéos modernes. Cela permettra de rejoindre une partie en cours, de gérer les déconnexions et si le serveur est modifié, les messages tiendront compte des modifications.



2) Un héritage complexe.
Dans Aurora, il y a plus 25 classes différentes pour gérer tous les personnages du jeu.



L'avantage d'un tel niveau d'héritage, c'est que chaque classe ne contient que les informations minimales. Elles seront plus rapides à créer et à détruire, consomment un minimum de mémoire et leurs fonctions sont réduites à l'essentielle. Dans Aurora, les monstres n'ont pas d'inventaire ni de compétence. Les autres villageois ne gagnent pas d'expérience.
C'est également plus pratique pour s'y retrouver car on ne se retrouve pas avec des classes composées de milliers de lignes.



3) les pools.
Quand un personnage meurt, il n'est pas systématiquement détruit. Il est conservé en mémoire dans un pool. Si je recrée un personnage identique, plutôt d'en recréer un en partant de zéro, j'en réutilise un qui était dans un pool.
En utilisant des pools pour les projectiles, chaque fois que votre personnage tire une flèche, il renvoie systématiquement la même. On gagne en temps de calcul en supprimant la destruction et la construction d'une classe.


Si vous avez des questions pour vos projets, ce sujet est ouvert.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Hamdryn
Commerçant
Commerçant


Masculin
Nombre de messages : 219
Date d'inscription : 18/12/2011

MessageSujet: Re: La programmation d'Aurora   Mar 28 Avr 2015 - 17:31

Vachement intéressant ! Ça me donne envie de télécharger le jeu pour voir ça à l'œuvre...

En plus ça nous donnera des idées pour implémenter un mode multi à vendetta. j'ai lu sur l'Unreal Developpement Network qu'il valait mieux penser un jeu en multi dès le départ plutôt que de chambouler l'architecture à la fin. Du coup, ça permet de voir un peu comment démarrer.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Syl
Artisan
Artisan
avatar

Masculin
Nombre de messages : 92
Date d'inscription : 08/03/2014

MessageSujet: Re: La programmation d'Aurora   Mar 28 Avr 2015 - 18:17

A la base, j'avais Kickstarté Plannetary Annihilation et testé le jeu depuis l'alpha. J'ai regardé leurs vidéos et ils expliquaient comment le jeu était fait. C'était très intéressant.
En gros le jeu sur ton ordinateur n'est qu'un genre de lecteur vidéo (interactif) qui affiche le rendu calculé par le serveur.

Dans la théorie, on appelle cela une structure MVC. (Model/View/Controler => Programme/Affichage/Interface)
Tu programmes ces éléments à part. C'est pratique pour une équipe de plusieurs programmeurs et si tu passe le jeu de 2D à la 3D, tu ne reprogrammes que la partie 'view'.

En fin de compte, j'ai passé autant de temps à programmer le multithreading que j'aurai passé sur un jeu en réseau. Car les 2 programmes (ou threads) en parallèles communiquent par des messages. Ils échangent des informations en permanence pour que le jeu reste synchronisé. Mais maintenant, les fondations qui serviront à un mode multi sont déjà posées.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: La programmation d'Aurora   

Revenir en haut Aller en bas
 
La programmation d'Aurora
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» programmation radio nano
» [Tutorial] Programmation (SDZ)
» Nabaztag qui reveille sans aucune programmation
» Comment bien débuter la Programmation
» Programmation sur AGS Apollo Justice: Ghosts And Murders

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
¤ Vendetta ¤ :: Autour d'Aurora-
Sauter vers: