¤ Vendetta ¤
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.


Forum du jeu de rôle, stratégie et gestion: Vendetta
 
AccueilPortailGalerieRechercherDernières imagesS'enregistrerConnexion
-28%
Le deal à ne pas rater :
Précommande : Smartphone Google Pixel 8a 5G Double Sim 128Go ...
389 € 539 €
Voir le deal

 

 La programmation d'Aurora

Aller en bas 
2 participants
AuteurMessage
Syl
Artisan
Artisan
Syl


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

La programmation d'Aurora Empty
MessageSujet: La programmation d'Aurora   La programmation d'Aurora EmptyMar 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...

La programmation d'Aurora Multithreading

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.

La programmation d'Aurora Heritage

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
Hamdryn
Commerçant
Commerçant



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

La programmation d'Aurora Empty
MessageSujet: Re: La programmation d'Aurora   La programmation d'Aurora EmptyMar 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
Syl
Artisan
Artisan
Syl


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

La programmation d'Aurora Empty
MessageSujet: Re: La programmation d'Aurora   La programmation d'Aurora EmptyMar 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
Contenu sponsorisé





La programmation d'Aurora Empty
MessageSujet: Re: La programmation d'Aurora   La programmation d'Aurora Empty

Revenir en haut Aller en bas
 
La programmation d'Aurora
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Devlog - programmation du jeu

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