Ninja Online Index du Forum

Forum des développeurs du projet de jeu en ligne Ninja Online
 

FAQFAQ RechercherRechercher MembresMembres
GroupesGroupes S’enregistrerS’enregistrer
ProfilProfil Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés ConnexionConnexion


Idées de conception en vrac

 
Poster un nouveau sujet   Répondre au sujet    Ninja Online Index du Forum -> Conception -> Programmation
Sujet précédent :: Sujet suivant  
Auteur Message
Trilowee
Dev Team

Hors ligne

Inscrit le: 13 Sep 2009
Messages: 268
Localisation: Lille
Emploi: Etudiante en prog

MessagePosté le: Lun 23 Nov - 22:22 (2009)    Sujet du message: Idées de conception en vrac Répondre en citant

Bon ici ça va être le gros bloc-note, tout ce qu'il faut se souvenir pour le jeu. Y'aura du très technique, un peu moins technique et du simple donc hésitez pas à me rappeler ce que j'aurais oublié et à demander des précisions sur les trucs flous.

Légende :
- Point résolu
- Point en cours de résolution
- Point bloqué car nécessitant l'attention d'autres personnes du groupe (vérifiez donc bien ce qui est en rouge chez les autres car ça peut vous concerner aussi)

[Pour moi] a écrit:
Gestion de l'affichage des autres joueurs et mobs sur la map

Principe :
- Pour ne pas itérer sur tous les persos qui sont sur la map, chaque map est découpée en case de 8*8 cases par exemple, chaque bloc contient une liste chainée des objets présents dans ce bloc. Si un objet est en coordonnées de (0,0) à (7,7) il sera dans le 1er bloc, (8,0) à (15,7) le 2ème bloc...
- On divise toutes les coordonnées par 8 pour obtenir des coordonnées de "bloc" et on itère sur tous les gros blocs qui sont contenu dans notre zone de recherche.
- En gros c'est comme si on avait une liste d'objets pour chaque case de la map mais pour pas faire trop bourrin à garder tout ça en mémoire du serveur on regroupe les cases ensemble.
- On limite aussi les modifications car on ne change de bloc que toutes les 8 cases.

Détail de mon algo (à modifier si nécessaire) :
  • Prendre comme taille de bloc 8x8.
  • Faire une map multiple de la taille des blocs (1ère map en 64x64 donc 8x8 blocs de taille). Par la même occasion modifier la map pour que personne ne puisse voir du noir et remplir d'arbres ou rocs pour montrer qu'on ne peut y accéder.
  • Mettre la map au niveau du serveur aussi (pour la vérif des collisions faite plus tard).
  • Faire une structure (tableau de listes chaînées) pour stocker dans la mémoire la carte de blocs.
  • Dans chaque bloc on a une liste d'objets et leurs coordonnées (hashmap ou coordonnées dans l'objet ?).
  • Faire en sorte qu'on ai le même stockage dans la BDD et quand on lance le serveur on charge toute la map de blocs de la BDD.
  • (Vérifier si là où veut aller un perso n'est pas absurde => sécurité anti-triche.)
  • Zone du joueur où on doit afficher les objets délimité par les points (x0,y0) et (x1,y1) sur une map (déterminés par sa résolution dans le fichier config)
  • Quand on veut faire une recherche des objets proche d'un joueur, on parcours tous les blocs proches du joueur
  • - On vérifie x1>x0 et y1>y0 sinon on permute les valeurs.
  • - On cap les valeurs pour que ça dépasse pas la taille de la map.
  • - Si le type d'objet correspond et que les coordonnées sont bonnes, on range dans un tableau les éléments trouvés et ensuite à tout ce qu'on a trouvé on l'envoi au client concerné.
  • A chaque fois que mon perso bouge, il envoie un message au prog serveur qui le traite (il regarde si mon perso avec ses nouvelles coordonnées ne change pas de bloc si c'est le cas il le fait, il regarde si des joueurs dans les blocs alentours à mon perso aux nouvelles coordonnées doivent être notifiés du changement de position et fait la notification si besoin est).
  • C'est quand un joueur bouge, que le serveur reçoit le paquet "j'ai bougé" qu'il a validé que le joueur peut bien bouger là où il peut qu'il envoie aux joueurs proches que le joueur a bougé, comme ça si personne bouge, pas de données qui transitent. Pareil pour toutes les actions.
  • Faire en sorte que si notre perso se déconnecte, on change dans la BDD les coordonnées où il se trouvait.
  • Faire en sorte qu'avec une commande (admin ça va de soit) lorsqu'on coupe le serveur tous les joueurs sont déconnectés et donc on peut ainsi du même coup rapatrier dans la BDD leurs coordonnées avec le point ci-dessus.

Fait en parallèle :
  • Récupération (côté client) des coordonnées quand on se connecte.
  • Récupération (côté serveur) des coordonnées quand on se connecte.
  • Récupération (côté BDD) des coordonnées quand on se connecte.
  • Récupérer la liste des personnages (côté client/serveur/BDD).
  • Écran de sélection des personnages.



[Pour BDD] a écrit:
  • Stocker tout en mémoire dans le programme serveur + sauvegarder régulièrement en BDD en cas de crash (toutes les 5min par ex) + sauvegarder en BDD lorsqu'on coupe le serveur correctement avec une commande + sauvegarder lors du logout du personnage ses données.
  • Charger de la BDD lors du lancement serveur : génération des mobs et chargement des autres données (tout est chargé en mémoire, tous les items, toutes les maps, tous les npc...).
  • Charger de la BDD lorsqu'un perso se log.
  • La BDD ne sert que de stockage de données lorsque le serveur est down (liste des mobs/items...) où lorsque le personnage n'est pas connecté (XP/PV/PM/Map/X/Y...).
  • Faire des commandes GM (notamment pour couper le serveur et que la save de la BDD se fasse correctement) (à faire dans la fenêtre de chat à prévoir).
  • Donc de ce fait, rajouter un niveau admin pour les comptes pour qu'ils puissent utiliser des commandes spéciales.



[Pour les autres choses] a écrit:
  • Faire un tit message quand y'a pas de serveur online pour le client.



[Pour les mobs] a écrit:
  • Dans la BDD : PV/PM/Xp donné/Objets dropés...

Exemple de données stockées pour Ragnarok :
- map
- zone de spawn aléatoire sur toute la map pour 0,0,0,0 sinon coordonnées d'un rectangle (pour les boss par exemple)
- nom du mob
- ID du mob dans la BDD
- nb de mobs en même temps sur la map (pour pas en avoir de trop en même temps)
- Délai entre mort et respawn (les mobs rares respawn parfois plusieurs heures après seulement)
  • Pathfinding pour le mob pour qu'il paraisse plus "intelligent" quand il cherche le chemin pour aller nous attaquer.
    On vérifie quand on respawn le mob qu'il peut être créé dans la case (si c'est pas dans le décors)



[Pour la map] a écrit:
  • Stockée sur le serveur et le client car :

- On vérifie que le client fait pas n'imp (aller au travers des murs avec un client modifié par ex)
- Et du coup ça sert pour le respawn des mobs, ils respawn pas dans un mur.
  • On vérifie tout ce qui vient du client, si c'est pas conforme on ban le compte.

_________________
Trilowee alias Valentine

Ninja Online


Dernière édition par Trilowee le Mar 29 Déc - 23:56 (2009); édité 2 fois
Revenir en haut
Publicité






MessagePosté le: Lun 23 Nov - 22:22 (2009)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Alex
Dev Team

Hors ligne

Inscrit le: 15 Sep 2009
Messages: 188
Localisation: Lille
Emploi: Etudiant
Scorpion (23oct-21nov) 龍 Dragon

MessagePosté le: Mer 2 Déc - 10:34 (2009)    Sujet du message: Idées de conception en vrac Répondre en citant

Mod(idMob, nomMob, pvMax, pvRestants, pointsAttaque, pointsDefense, delaiRespwan, nbMaxMob, Map); > bien ca ?
_________________
Flooder.
Dev Team.


Revenir en haut
Trilowee
Dev Team

Hors ligne

Inscrit le: 13 Sep 2009
Messages: 268
Localisation: Lille
Emploi: Etudiante en prog

MessagePosté le: Mer 2 Déc - 20:41 (2009)    Sujet du message: Idées de conception en vrac Répondre en citant

Je me demandais s'il nous fallait point de défense pour le mob... On s'en fout pas un peu vu que sa vie on la change comme on veut selon le type de mob ?
_________________
Trilowee alias Valentine

Ninja Online


Revenir en haut
Laurent
Dev Team

Hors ligne

Inscrit le: 13 Sep 2009
Messages: 70
Localisation: Lille gambetta

MessagePosté le: Jeu 3 Déc - 22:29 (2009)    Sujet du message: Idées de conception en vrac Répondre en citant

bah la défense ne servirait que pour réduire les dommages recus d'un certain % en fonction de cette caractéristique ?
_________________
Dev Team ^^


Revenir en haut
Trilowee
Dev Team

Hors ligne

Inscrit le: 13 Sep 2009
Messages: 268
Localisation: Lille
Emploi: Etudiante en prog

MessagePosté le: Jeu 3 Déc - 22:45 (2009)    Sujet du message: Idées de conception en vrac Répondre en citant

Oui mais le mob ne met pas d'équipement et on a pas trop à s'emmerder à calculer ça tu vois, si le gars le tape avec une attaque de 12 points de dégât le mob perdra 12 points de vie, c'est pas grave, suffit de lui mettre assez de PV pour qu'il tienne bien le coup contre des joueurs de son lvl.
_________________
Trilowee alias Valentine

Ninja Online


Revenir en haut
Laurent
Dev Team

Hors ligne

Inscrit le: 13 Sep 2009
Messages: 70
Localisation: Lille gambetta

MessagePosté le: Jeu 3 Déc - 22:48 (2009)    Sujet du message: Idées de conception en vrac Répondre en citant

bah tu peux voir en fonction de sa race : ours : bc d'armure , hamster : -12 d'armure ^^
_________________
Dev Team ^^


Revenir en haut
Trilowee
Dev Team

Hors ligne

Inscrit le: 13 Sep 2009
Messages: 268
Localisation: Lille
Emploi: Etudiante en prog

MessagePosté le: Jeu 3 Déc - 22:53 (2009)    Sujet du message: Idées de conception en vrac Répondre en citant

Oui mais ce que tu ne vois pas c'est que ça fait faire au serveur un calcul qui sert à rien. Si beaucoup de joueurs tapent en même il va s'amuser à faire plein de pourcentage pour rien alors que si un ours a 5000PV et un hamter 25PV tu vois bien que ça revient au même quand le joueur fait que 10 de dégât... Il va devoir plus taper l'ours que le hamster.
_________________
Trilowee alias Valentine

Ninja Online


Revenir en haut
Laurent
Dev Team

Hors ligne

Inscrit le: 13 Sep 2009
Messages: 70
Localisation: Lille gambetta

MessagePosté le: Jeu 3 Déc - 23:04 (2009)    Sujet du message: Idées de conception en vrac Répondre en citant

bah apres si y'a pas de baisse de dégat par rapport à l'armure, si le perso se développe , il va taper à 2K et paf il fera que du 2K sur tout le monde, même si son adversaire est 10 niveau de plus ...
_________________
Dev Team ^^


Revenir en haut
Trilowee
Dev Team

Hors ligne

Inscrit le: 13 Sep 2009
Messages: 268
Localisation: Lille
Emploi: Etudiante en prog

MessagePosté le: Jeu 3 Déc - 23:09 (2009)    Sujet du message: Idées de conception en vrac Répondre en citant

Oui, pour les mobs, les persos ont de l'armure.
Mais si le gars est niveau 60 et tape à 2K il va tuer en un coup les mobs petit lvl mais un mob lvl 60 a par exemple 50K de vie...
_________________
Trilowee alias Valentine

Ninja Online


Revenir en haut
Laurent
Dev Team

Hors ligne

Inscrit le: 13 Sep 2009
Messages: 70
Localisation: Lille gambetta

MessagePosté le: Jeu 3 Déc - 23:20 (2009)    Sujet du message: Idées de conception en vrac Répondre en citant

bah si les persos ont de l'armure, il faudra bien faire une diminution des degats subis pour eux en fonction de leur armure, ca revient au mm ...


Mais bon, autant pas compliquer pour rien, et ne pas le mettre
_________________
Dev Team ^^


Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 19:40 (2017)    Sujet du message: Idées de conception en vrac

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Ninja Online Index du Forum -> Conception -> Programmation Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  

Index | Panneau d’administration | creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001 phpBB Group
Traduction par : phpBB-fr.com