6.07.2010

4.1 US

Dorénavant, j'inclurai de temps en temps des données concernant la version US 4.1 actuelle à titre d'information. Ca prend pas beaucoup de temps à rassembler et ça peut aider du monde, alors pourquoi pas.
Format du tableau : Quantité / Item / Rate ( Du plus rare (5) au plus fréquent (30))
Treasure Chest Random :
Remarquez l'absence de Symbol of Virgo et de Symbol of Cancer, aucune idée de la raison pour l'instant.

Parmi les drops recensés un peu partout ailleurs sur internet pour la nouvelle zone payante "Sedecram Dungeon of the Heaven Shelter", il y manque en particulier :
Heaven Bacchanalia, Heaven Acorchado, Heaven Ghoul Spirit, Heaven Myconid, Heaven Red Elemental : Rough-Stone (1/10000)
Heavenly Vespanolla Soldier : Rough-Stone (1/5000)

Et ce que l'on ne trouve nulle part, ce sont les drops des boss et raid boss dont je vais commencer à récupérer les informations. Voici par exemple, le boss du même nouveau donjon, Heaven Giant Keeper.


Heaven Giant Keeper :
GROUPE 1 : 50% chance (Seulement 1 seul de ce groupe)
Symbol of Pisces
Symbol of Aries
Symbol of Taurus
Symbol of Gemini
Symbol of Cancer
Symbol of Leo
Symbol of Virgo
Symbol of Libra
Symbol of Scorpio
Symbol of Sagittarius
Symbol of Capricorn
Symbol of Aquarius 
+
GROUPE 2 : 100% chance (Seulement 1 seul de ce groupe)
Chevalier Greaves
Mystic shoes
Tracking boots
Assassin boots
Chevalier Gauntlets
Mystic Gloves
Aiming Gloves
Assassin Gloves 
+
GROUPE 3 : 2.5% chance (Seulement 1 seul de ce groupe)
Recipe - Elite Piernoente
Recipe - Elite Inviardeco
Recipe - Elite Camarylis
Recipe - Elite Calienalbino
Recipe - Elite Geniaruleano
Recipe - Dragon Heart
Recipe - Archangel's Heart
Recipe - Seeds of Rafflesia
Recipe - Siren's Scale
+
GROUPE 4 : 5% chance (Seulement 1 seul de ce groupe)
Recipe - Enhanced Physical Resistance Necklace
Recipe - Enhanced Shooting Resistance Necklace
Recipe - Enhanced Flame Resistance Necklace
Recipe - Enhanced Ice Resistance Necklace
Recipe - Enhanced Lightning Resistance Necklace
Recipe - Enhanced Mental Resistance Necklace
Recipe - Leather Belt
Recipe - Metal Belt 
+
GROUPE 5 : 2% chance (Seulement 1 seul de ce groupe)
Recipe - Le Noir for Fighter
Recipe - Le Noir for Scout
Recipe - Le Noir for Musketeer
Recipe - Le Noir for Wizard
Recipe - Le Noir for Elementalist
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar
Pure Gold Bar 
+
GROUPE 6 : 5% chance (Seulement 1 seul de ce groupe)
The Grim-wraith
Grim-wight
Vampiric Edge
Daemon Slayer
Daemon Sword
Gigantic Poleaxe
Assassin Dagger
Sword Breaker
Carbon Gaiters
Desert Storm
The Black Dragon
Conqueror Shotgun
Conqueror Cannon
The Grim-shout
The Rod of Armageddon
Elite Moonstone Rod
Elite Staff of Gnosis
Elite Behemoth Bracelet
Bracelet of Leviathan
Bracelet of Ziz
Bracelet of the Great Soul 
+
GROUPE 7 : 50% Chance (Seulement 1 seul de ce groupe)
The Grim-wraith
Grim-wight
Vampiric Edge
Daemon Slayer
Daemon Sword
Gigantic Poleaxe
Assassin Dagger
Sword Breaker
Carbon Gaiters
Desert Storm
The Black Dragon
Conqueror Shotgun
Conqueror Cannon
The Grim-shout
The Rod of Armageddon
Elite Moonstone Rod
Elite Staff of Gnosis
Elite Behemoth Bracelet
Bracelet of Leviathan
Bracelet of Ziz
Bracelet of the Great Soul 
+
GROUPE 8 : 100% Chance
Enchant Chip Lv 96 *3



Explications :
Les serveurs Granado Espada officiels utilisent un système de drops parfois bien particulier. On peut le voir sur cet exemple bien précis :
Les drops se décomposent en 8 groupes distincts, chacun d'entre eux étant géré avec un nombre aléatoire différent. Dans le meilleur des cas pour les plus chanceux vous aurez donc 8 drops.
Exemple avec le groupe 5 : 2 % de chance d'avoir 1 objet de ce groupe, mais à l'intérieur du groupe, vous avez beaucoup plus de chance de recevoir un Pure Gold Bar qu'un Recipe - Le Noir étant donné le nombre de Pure Gold Bars dans ce groupe.
Les groupes 6 et 7  sont identiques, seul le pourcentage est différent, ce qui signifie que vous pouvez avec de la "chance" avoir 2 armes 30AR.
Ce listing ne concerne que les drops "scriptés" coté serveur (ceux qui ne sont pas influencés par les levels, Drop Manuals et autres). A coté de ça il reste également d'autres drops de moindre importance, ceux généralement listés sur les autres sites, tels qu'ici


Notez bien que toutes ces infos me servent également pour l'implémentation de la version 4.1 StGE.

6.01.2010

Des nouvelles fraîches.... pas si fraîches.

Comme certains d'entre vous l'on sûrement remarqué, cela fait un moment maintenant que je n'ai pas posté de nouvelles concernant le statut du développement. Il y a plusieurs raisons à cela que j'ai déjà survolé par-ci par-là (beaucoup de travail IRL, 3 semaines de vacances, reprise difficile ensuite ..). L'autre raison est, comme vous en avez sûrement entendu parler, le passage prévu en 4.1 cet été de la version US du jeu. J'ai un peu galéré depuis le début de l'année avec les multiples mises à jour de cette version, qui m'ont obligé plusieurs fois à reprendre un travail réalisé les semaines précédentes.
D'où mon idée d'attendre la sortie de la version 4.1 ainsi que d'une éventuelle sortie boite du jeu pour continuer l'essentiel du développement sur cette version. Le but premier étant de finaliser une version 4.1 DÉFINITIVE et STATIQUE(qui ne suivra donc plus les mises à jour US).
Oui vous avez bien compris, le serveur sortira en version 4.1 (alors que peut être la version officielle sera largement supérieure) et ne sera plus tenu à jour ensuite (trop lourd à gérer pour une seule personne). Le suivi et la correction de bugs sera bien entendu de mise.

Résumé : Plus le temps de faire des updates toutes les semaines, la version du serveur qui sortira sera la 4.1, utilisable avec la future version retail box only, et ensuite, plus de mises à jour de prévues.

3.26.2010

StGE : Première vidéo

Pour répondre à certains commentaires, j'ai bricolé (capture en 4ème vitesse, pas de codecs sur le PC pour encoder correctement, pas de temps tout court XD) une petite vidéo en ce vendredi dans laquelle je montre essentiellement la dernière commande intégrée dans le jeu (c'est à dire il y a une moins d'une heure).
Vidéo non retouchée, dans laquelle vous remarquerez que je me plante moi même un peu dans les commandes ^^ Pas le temps d'en montrer plus, de toute manière j'ai même faillit rien montrer du tout tellement je suis pressé de rentrer.
Ce que vous voyez en gros c'est :
- Création de compte.
- Vérifications de mot de passe.
- Création d'une famille.
- Création d'un personnage.
- Création de plusieurs NPCs (objets) sur la map d'arrivée.

Profitez en bien de celle-là, parce que je vais pas perdre souvent du temps à en faire, des videos ;)

3.04.2010

Lien entre LoginServer et GameServer

Avant aujourd'hui le LoginServer et le GameServer ne communiquaient entre eux que par le biais de fichiers XML ce qui pouvait causer pas mal de soucis (relecture des fichiers XMLs obligatoires par le GameServer si une nouvelle famille était créée sur le LoginServer, de même pour les personnages etc ).
Un cas intéressant restait celui d'une connexion au GameServer lorsque le joueur clique sur [New Team], cas que je vais décrire ci-dessous:

-{1} Le client envoie au LoginServer l'ID des personnages sélectionnés.
-{2} Le LoginServer envoie les informations de connexions du GameServer au client.
-{3} Le client envoie au GameServer son nom de compte (celui utilisé sur la page de login).

Le problème est : comment le GameServer connait-il les personnages sélectionnés par le client ?
Il était contourné jusqu'à maintenant par la création d'une table XML supplémentaire contenant l'ID de la famille plus les 3 ID des personnages sélectionnés (table d'ailleurs nécessaire car utilisée par le LoginServer pour récupérer et envoyer au client les informations sur la [Previous Team]). Cette table était donc lue par le GameServer lorsqu'il recevait l'étape 3.
Cette obligation de relire le fichier XML n'étant pas très flexible, je me suis orienté vers la création d'une nouvelle connexion et donc, d'un nouveau "protocole" entre le LoginServer et le GameServer.
Voici donc le nouveau schèma de connexion :

-{1} Le client envoie au LoginServer les ID des personnages sélectionnés.
-{2} Le LoginServer envoie le nom de compte du client ainsi que les ID des personnages sélectionnés au GameServer.
-{3} Le GameServer accuse réception des informations et renvoie OK au LoginServer.
-{4} Le LoginServer envoie les informations de connexion du GameServer au client.
-{5} Le client envoie au GameServer son nom de compte (celui utilisé sur la page de login).
-{6} Le GameServer fait le lien entre le nom du compte et les IDs reçus à l'étape {2} par le LoginServer.

Voila, à partir d'aujourd'hui le LoginServer peut communiquer autant qu'il veut avec le GameServer, avec des paquets forgés exprès pour eux deux qui n'auront de limite que celle de mon imagination :D

3.01.2010

Back to work.

Quelques modifications ont été apportées ce matin pour prendre en compte les modifications dues à la version 3.4 sur le LoginServer. Certaines structures de paquets ont été légérement modifiées pour réfléter les changements permettant ainsi au client de pouvoir de nouveau se connecter ;)
Rien de modifié pour le moment sur le GameServer je pense charger les nouvelles données 3.4 dans le courant de semaine, voire la semaine prochaine.

2.16.2010

Retour sur le LoginServer

Le serveur d'authentification est maintenant terminé à 80% et permet ce que permet un serveur d'authentification officiel (les 20% de travail restant consisteront à de l'optimisation de code et d'autres choses que je définirai ci-dessous) c'est à dire :

- Création de nouveaux comptes ( Ça c'est ma petite touche personnelle)
- Création de nouvelles familles.
- Création de nouveaux personnages.
Ces derniers ont maintenant tous les "vrais" attributs, j'entends par là : stats, "starting level", Arme équipée par défaut si il en possède lors de la création (valable pour les UPCs surtout)
- Le tout est maintenant sauvegardé entièrement sous format XML. Avant aujourd'hui, je ne sauvegardais rien afin d'aller plus loin et plus vite dans le développement. Maintenant le serveur d'authentification sauvegarde correctement toutes les familles, comptes et personnages créés. Plus pratique quand même, dans le cadre d'un MMO.



Il restera à :
- Importer une partie des scripts (terminés pour le serveur d'auth.) afin de calculer à la volée les HP, MP des personnages (à moins que je ne décide de faire calculer ces données par le serveur et les sauvegarder "brutes" dans le fichier xml des personnages (?).
- Faire une vérification si le compte est déjà connecté, soit sur le Login Server, soit sur le Game Server et envoyer le message correspondant au client.
- Trouver comment le Login Server fait la liaison avec l'inventaire de la famille (que je ne pensais pas inclure dans le Login Server) pour savoir quel UPC peut être créé ou pas (à moins que ce ne soit encore une histoire de fichiers XML écrits par le Game Server et récupérés par le serveur d'auth.).

2.11.2010

News du

- Prise en compte du CashShop.
- Correction dans le système de chat : celui ci faisait planter le serveur suite à une modification quand on utilisait les Clan, Squad et Group chats.
- Ajout des Poses (^^)
- Ajout du code pour les objets.

Je me rend compte que je n'explique pas forcement beaucoup les étapes en détail, alors pour une fois je vais expliquer un peu plus comment ca marche :

Contrairement à d'autres MMO, la définition des objets (par exemple une arme) sont stockées dans 4 tables différentes, et non une seule. Si l'on prend l'exemple de cette dague :
 
La première table va stocker uniquement l'ID de la dague "blank", c'est à dire sans upgrade ni aucune modification. Ainsi, si le jeu contient 1000 objets, le serveur ne gérera qu'une seule table commune à tous les joueurs et contenant ces 1000 objets (on est loin d'une table comme lineage2, ou chaque objet de chaque utilisateur correspond à une ligne dans la base de données). De fait, le serveur indique juste au joueur qu'il est en possession de la "Queen's Dagger", position 1 (InventoryID 1) ici dans l'inventaire du screenshot. On a au final un :
SendInventory(TestFamily, ItemID=QueensDagger, ItemCount = 1, InventoryID =1)

Vous aurez compris, je dit au client qu'il est en possession d'une QueensDagger, une seule, et qu'elle est en position 1 dans l'inventaire. Remarquez au passage le peu d'informations stockées dans cette table (Owner, ItemID, ItemCount, InvID)

Ensuite le serveur va chercher dans une deuxième table si l'objet ayant l'inventoryID = 1 possède des enchantements. Dans l'exemple, il y en a, le serveur exécute l'équivalent de :
SendEnchantments(TestFamily, InventoryID =1, ATK=40, SPEED = 28 .....)

Puis si cette dague est enchantée, on envoie l'information :
SendUpgradedItem(TestFamily, InventoryID, Level=9, FinalAtk=69)

Et enfin, si la dague possède elle-même des sockets, on envoie aussi. (Il n'y en a pas dans notre exemple ^^)

L'avantage est, je le rappelle, de ne stocker par objet que les informations réellement nécessaires, et de n'envoyer au client que celles nécessaires également. Dans notre exemple, on n'envoie ni ne stocke les informations de sockets sachant que notre arme n'en possède pas.

Voila, j'ai pas envie de faire le laïus à chaque fois, au moins c'est fait une fois pour toute ;)