Comment Dofus Unity aurait DU être codé

DISCOVERY Space Empire
17 Aug 202418:06

Summary

TLDRIn this video, the creator discusses the recent beta update of Dofus Unity, expressing concerns over the game's performance issues despite its transition from Flash to Unity, a modern engine. They compare the situation to a student's progress in a math test and demonstrate how a simple Unity project should perform, highlighting the differences in inventory and sales management. The video includes a basic server example and a critique of Dofus Unity's current state, offering insights into what could be improved for a smoother gaming experience.

Takeaways

  • 😀 The video discusses a new update for Dofus Unity, which is a beta test of the game's transition from Flash to Unity.
  • 😕 The community's response to the Dofus Unity beta has been mixed, with some players experiencing issues.
  • 🤔 The speaker expresses surprise at the performance issues, given Unity's capabilities and the transition from the obsolete Flash platform.
  • 🛠️ The video includes an analogy comparing the game's development to a student taking a math test, suggesting that fundamental errors indicate deeper issues.
  • 💡 The speaker shares their own simple Unity project as an example of how Dofus Unity could have been implemented more effectively.
  • 📦 The script mentions the use of prefabs for various game elements, such as inventory lines and purchasable items.
  • 🔍 The video demonstrates the use of search and filter functions in the speaker's Unity project, highlighting the speed and responsiveness.
  • 👾 The speaker critiques the Dofus Unity beta's memory leaks and interface errors, which they find inexplicable given Unity's robustness.
  • 💻 The video includes a brief overview of the code and structure used in the speaker's Unity project, without going into deep technical details.
  • 📈 The speaker discusses the server-side aspect of the game, including database management and the efficiency of SQL queries for item listings.
  • 🚀 The video concludes with an offer of assistance to the Dofus development team, showing a willingness to help improve the game's transition to Unity.

Q & A

  • What is the main topic of the video script?

    -The main topic of the video script is discussing the new update for Dofus Unity, its beta testing, and the issues encountered during the testing phase.

  • Why is the speaker surprised by the performance issues in Dofus Unity?

    -The speaker is surprised because Unity, the engine used for Dofus Unity, is known for its capabilities in handling 2D and 3D graphics, and they expected better performance due to the transition from the obsolete Flash engine.

  • What does the speaker compare the Dofus Unity beta testing to in the script?

    -The speaker compares the beta testing to giving a math test to a student and observing their progress and errors, highlighting the importance of proper development and debugging in software.

  • What are the specific issues mentioned with the Dofus Unity interface?

    -The specific issues mentioned include errors in the interface that should not exist even at the beta stage, memory leaks, and unexpected behavior in the sales tab of the game.

  • What is the speaker's concern regarding the development of Dofus Unity?

    -The speaker's concern is that the fundamental errors and memory leaks observed during the beta testing might indicate deeper issues in the game's development, which could lead to a non-functional product regardless of the time given for corrections.

  • What does the speaker do to demonstrate how Dofus Unity could have been implemented better?

    -The speaker creates a simple client in Unity with a basic server example, focusing on the sales hotel feature, to show how the implementation could have been more efficient and less prone to errors.

  • What is the purpose of the prefabs mentioned in the script?

    -The prefabs are used to create the lines for sales and purchasable items, which are then instantiated based on the data provided by the server.

  • What is the role of the 'Item Detail' class in the speaker's example?

    -The 'Item Detail' class is used to store all the details of an item, such as whether it's consumable, its category, and potentially its level, which are not rewritten each time an item line is added.

  • How does the speaker handle the random generation of items for testing purposes?

    -The speaker creates random inventories and lists of items for sale with random labels, prices, quantities, and expiration dates to test the system with a variety of data.

  • What is the speaker's approach to demonstrating the server-side of the application?

    -The speaker shows the server-side by explaining how requests would be structured, the size of the requests, and the process of inserting and searching for items in a database, including the use of SQL migrations.

  • What is the speaker's final statement regarding helping the Dofus Unity project?

    -The speaker offers to help the Dofus Unity project to the best of their ability, expressing a desire for the project to succeed and inviting any interested parties to reach out for assistance.

Outlines

00:00

😕 Dofus Unity Beta Testing and Performance Concerns

The speaker begins by addressing the audience and introducing the topic of the video, which is the new Dofus Unity beta update. They express their surprise and disappointment with the performance issues they've encountered during testing, despite the game transitioning from the outdated Flash engine to Unity, which is known for its capabilities in handling 2D and 3D graphics. The speaker uses an analogy comparing the situation to a student taking a math test, highlighting that even with time, certain fundamental errors should not occur. They mention memory leaks and interface issues that should not be present even in a beta stage, expressing concern for the game's future development.

05:00

🛠️ Demonstrating a Simple Unity Implementation for Dofus Features

The speaker proceeds to share their own simple Unity project, which serves as an example of how certain features of Dofus could be implemented more effectively. They discuss the components of their project, including prefabs for various game elements, scroll instances, input fields, and scripts for managing in-game items and sales. The focus is on the 'Hotel des Ventes' feature, which was frustratingly slow in the Flash version, and the speaker expected a more fluid experience with Unity. They provide a brief overview of the code structure, including item databases and classes, and mention the use of random data to test the system's performance, emphasizing that even with a large volume of items, their implementation remains fluid.

10:00

💻 Backend Considerations and Server-Side Logic for Dofus Unity

Moving on to the server-side of the game, the speaker outlines the process of how requests are handled and data is managed on the server. They discuss the structure of the data being sent to the server, including item details and pricing, and how this data is stored and updated in the database. The speaker provides insights into the SQL migrations used to create the database and demonstrates the process of inserting a large number of items into the database, showcasing the efficiency of the operation. They also discuss search functionality and how it is optimized on the server to avoid unnecessary strain on resources.

15:01

🤔 Reflections on Performance Issues and Future Assistance for Dofus Development

In the final paragraph, the speaker reflects on the performance issues they've observed in the Dofus Unity beta and expresses confusion as to why the game lags, given the powerful graphics capabilities demonstrated in other high-performance games. They reiterate the rapid response times, fast file transfer, and quick rendering capabilities they've achieved in their own Unity project. The speaker offers their assistance to the Dofus development team if needed, showing a keen interest in the successful outcome of the project, and concludes the video with a sign-off for future content.

Mindmap

Keywords

💡Dofus Unity

Dofus Unity refers to the new beta update of the game Dofus, which has been ported to the Unity engine. This is significant as it marks a transition from the outdated Flash platform to a more modern and versatile engine capable of handling 2D and 3D graphics. The video discusses the mixed reactions to this update, with the speaker expressing surprise at the performance issues despite Unity's capabilities.

💡Performance Issues

Performance issues are problems related to the efficiency and speed of the game's operation. In the context of the video, the speaker notes unexpected performance issues with the Dofus Unity update, such as memory leaks and interface errors, which should not be present even in a beta version, indicating a potential problem in the game's development or optimization process.

💡Unity Engine

The Unity Engine is a widely-used platform for creating 2D and 3D games. It is known for its flexibility and the ability to export games to multiple platforms. The video's speaker is familiar with Unity and expected improved performance in Dofus due to its transition from Flash to Unity, but instead encountered various issues, highlighting a disconnect between expectation and reality.

💡Memory Leaks

Memory leaks in the context of the video refer to a type of software bug where a program does not release memory that is no longer needed, leading to decreased performance over time. The speaker finds it puzzling that such issues are present in Dofus Unity, given that Unity is coded in C#, a language that should inherently prevent such errors if used correctly.

💡Beta Testing

Beta testing is the phase of software development where the product is tested by select users to find and report bugs before its official release. The video discusses the beta of Dofus Unity, indicating that the game is still in a testing phase and that the issues mentioned are part of the feedback that developers would consider for improvement.

💡Flash

Flash is a deprecated multimedia software platform used for creating animations, games, and applications. The video script mentions that Dofus was previously built on Flash, which has become obsolete, hence the transition to Unity. The move signifies an upgrade to a more current and supported technology.

💡Development Stages

Development stages refer to the various phases a software product goes through from conception to completion. The script implies that certain errors found in the Dofus Unity beta should not have been present, suggesting a failure at some stage of the development process.

💡Inventory System

The inventory system in the context of the video is a feature within the game that allows players to manage their items. The speaker discusses creating a simple client in Unity to demonstrate how an inventory system could be implemented effectively, contrasting it with the issues found in Dofus Unity's inventory management.

💡Prefabs

Prefabs in Unity are reusable game objects that can be instantiated multiple times in a scene. The video script describes using prefabs for each line of items in the inventory or sales interface, which simplifies the process of creating and managing these elements within the game.

💡Input Fields

Input fields are UI elements that allow users to input data, such as text. In the video, the speaker mentions input fields for searching within the inventory and sales features, indicating a need for interactive and user-friendly design in the game's interface.

💡Server-Client Model

The server-client model is a framework where the server manages data and the client is the user interface. The video script discusses the server-client relationship in the context of filtering and managing game data, emphasizing the importance of efficient communication between the game's backend and frontend for optimal performance.

Highlights

Introduction to a video discussing the new Dofus Unity beta update and its mixed reception among players.

Discussion on Dofus being ported to Unity, a more modern engine compared to the outdated Flash.

Surprise at the performance issues despite Unity's capabilities for 2D and 3D, which should benefit Dofus.

An analogy comparing the new Unity update to a student taking a math test, highlighting the inconsistencies and errors.

Concerns about the presence of interface errors and memory leaks in the Unity version of Dofus.

A demonstration of a simple Unity-based client that functions more smoothly than the current Dofus Unity beta.

Explanation of the use of prefabs for item lines in the hypothetical Unity client.

Description of the inventory and sales interface design in the custom Unity client example.

Details on the script's internal variables for managing inventory and sales listings.

Introduction to the item database structure used in the custom Unity client.

Differentiation between item classes for inventory, sales by other players, and items being sold by the user.

Use of random data to test the fluidity and performance of the custom Unity client.

Demonstration of the client's ability to handle a large number of items without performance issues.

Explanation of the server-side script for handling sales and inventory data in the custom Unity client.

Discussion on the efficiency of the server's response time and data handling capabilities.

Presentation of the server's database structure and how it manages sales listings.

Final thoughts on the potential of the Unity engine for Dofus and the desire for the project's success.

Transcripts

play00:00

e bien bonjour à tous aujourd'hui je

play00:02

fais une petite vidéo qui n'a rien à

play00:03

voir avec Discovery pour parler un petit

play00:05

peu de d'ofus donc il y a une nouvelle

play00:08

mise à jour qui est sortie pour tester

play00:10

la beta de Dofus Unity et euh on a pu

play00:13

tester un petit peu les joueurs et comme

play00:15

vous avez pu le voir c'est très mitigé

play00:16

je pense que si vous avez cliqué sur ce

play00:18

lien vous savez de quoi je parle euh ce

play00:21

qui m'interpelle un peu c'est que Dofus

play00:23

a été donc porortter sur Unity qui est

play00:25

le moteur que j'utilise aussi pour

play00:26

Discovery qui est un moteur que je

play00:28

connais du coup assez bien et je

play00:30

m'attendais à avoir du coup des

play00:31

performances de malade puisque on passe

play00:33

de flash qui est complètement obsolète à

play00:35

quelque chose qui est qui est conçu pour

play00:38

faire de luui et de la 2D ou de la 3D

play00:40

donc en l'occurrence de la 3D pour Tofus

play00:43

eu j'ai été un peu surpris de voir des

play00:46

erreurs je vais essayer de faire une

play00:48

petite analogie si vous donnez un

play00:49

contrôle de math à une classe d'élèves

play00:51

et que vous voyez que il y a un élève

play00:52

qui au bout d'une heure il a commencé à

play00:55

faire quelques exercices il a fait

play00:57

quelques fautes mais bon globalement il

play00:58

avance vous dites bon bah sur le sur la

play01:01

durée du test si ça dure 2 heures il va

play01:03

s'en sortir et puis sur le long terme si

play01:05

on lui laisse assez de temps il va faire

play01:07

quelque chose de de correct si par

play01:08

contre votre élève il met n'importe quoi

play01:11

dans les premiers exercices même si il a

play01:13

fait une bonne partie de la copie mais

play01:15

que en fait il répond même pas des maths

play01:17

mais il met des trucs de SVT ou de bio

play01:19

ou des choses qui n'ont aucun sens bah

play01:21

vous comprenez bien que même en laissant

play01:22

un temps infini à cet élève euh ça va

play01:25

pas être possible de d'aboutir à quelque

play01:27

chose de fonctionnel et malheureusement

play01:28

c'est un petit peu ce qui meit fait peur

play01:30

avec Dofus Unity euh j'ai vu des il y a

play01:33

des erreurs dans l'interface qui ne

play01:35

devraient pas exister même au stade de

play01:37

beta en fait ne devrait jamais exister

play01:39

pendant le développement du jeu il y a

play01:40

aucun stade où ça peut arriver et c'est

play01:42

corriger après euh il y a des fites de

play01:44

mémoire un peu bizarres sachant que

play01:45

Unity est codé en c#arp donc pour faire

play01:48

des fuites de mémoire il faut quand même

play01:50

pas du tout comprendre ce qu'on fait

play01:51

enfin je sais pas je sais pas dans

play01:53

quelle mesure je sais pas comment a été

play01:55

conçu dans les fonds d'ofus mais ce que

play01:57

j'aimerais vous faire c'est vous montrer

play01:58

un petit peu comment ça aurait pu êre

play02:00

fait en utilisant Unity et en utilisant

play02:02

une un petit exemple de serveur tout

play02:04

bête je vais juste vous prendre

play02:05

l'exemple de la l'hôtel des ventes parce

play02:07

que c'est ce qui m'a le plus trigger

play02:08

parce que dans la version flash de Dofus

play02:10

l'hôtel des ventes c'était vraiment

play02:11

quelque chose qui était frustrant parce

play02:12

que c'était très lent et là je

play02:15

m'attendais à pouvoir avoir quelque

play02:16

chose de très fluide et en fait on se

play02:18

rend compte que dans l'onglet des ventes

play02:19

c'est impossible de modifier ses ventes

play02:21

ça freeze ça crache souvent quand on

play02:24

sélectionne des objets ça sélectionne

play02:25

des d'autres objets dans la ligne en

play02:27

fait il y a beaucoup de choses je

play02:28

comprends même pas comment c'est

play02:29

possible que que ça se comporte comme ça

play02:31

donc euh là j'ai fait une un petit

play02:34

client tout bête où tout fonctionne en

play02:36

local pour l'instant donc je vais juste

play02:38

vous passer sur le code rapidement je

play02:40

sais qu'il y a beaucoup de gens qui sont

play02:41

ici qui ne programment pas du tout donc

play02:43

vous pouvez éventuellement passer cette

play02:46

partie euh si ça vous intéresse vous

play02:47

pouvez voir un petit peu en détail je

play02:49

vais pas rentrer dans les profondeurs du

play02:50

code aujourd'hui parce qu'il y a plein

play02:52

d'autres vidéos sur la chaîne qui qui

play02:53

parle de ça là on va juste je juste je

play02:57

juste détailler rapidement euh ce qu'il

play02:59

y a donc tout d'abord les préfabes donc

play03:01

ça ça va être les lignes qu'on va avoir

play03:03

par exemple chaque ligne de vente

play03:05

d'objets va être une préfab chaque ligne

play03:08

de d'objets achetable aussi et qu'on va

play03:11

instancier selon ce que va nous donner

play03:13

le serveur les scroll instance c'est là

play03:15

où on va mettre ces préfbles là donc les

play03:18

conteneurs par exemple pour la grille de

play03:20

l'inventaire et cetera les input field

play03:23

c'est les champ d'entrée donc là le

play03:24

champ de recherche pour l'inventaire et

play03:26

le champ de recherche pour les ventes

play03:28

pour les ob les objets en vente et

play03:30

ensuite vous avez ici les modifications

play03:32

pour les ventes si vous cliquez sur un

play03:33

objet que vous puissiez modifier euh ça

play03:35

c'est les variables internes au script

play03:37

euh vous avez donc la liste d'objets

play03:40

inventaire la liste des autres objets

play03:42

donc c'est les objets qui sont en ventre

play03:44

par d'autres joueurs et la liste de nos

play03:46

objets c'est les objets que on vend nous

play03:48

vous avez les items base de données donc

play03:50

ça ce c'est ce qui est installé dans

play03:52

Dofus donc j'en ai fait unee petite

play03:53

partie parce que j'allais pas tout me

play03:54

retaper à la main c'était pas vraiment

play03:56

le but euh vous avez donc tous les

play03:58

objets avec les détails par exemple

play04:00

est-ce que c'est un consommable quelle

play04:01

catégorie donc là j'ai mis des céréales

play04:03

des potions et puis des ailes j'ai fait

play04:05

un petit peu au hasard et euh ici vous

play04:07

allez pouvoir donc dans la classe item

play04:09

détail mettre tous les détails de

play04:11

l'objet puisque dans les objets en vente

play04:13

vous allez pas à chaque fois que vous

play04:14

mettez une ligne d'un objet réécrire que

play04:16

c'est une catégorie l que ça se mange et

play04:19

cetera donc si on regarde un petit peu

play04:21

les classes euh un objet ça a un label

play04:24

donc ça ça va être le nom de l'objet et

play04:26

une quantité donc ça si c'est votre

play04:27

inventaire ça va être la quantité que

play04:28

vous en possédez

play04:30

et un ID donc ça c'est l'identifiant de

play04:32

l'objet ça permet de se retrouver dans

play04:34

la base de données qui est côté serveur

play04:36

si vous voulez par exemple supprimer un

play04:38

objet vous allez pas dire je supprime

play04:40

les ailes de Scar à feuille que j'ai en

play04:43

quantité 30 vous allez dire j'ai mon

play04:45

idée ab015 F et je supprime cinq objets

play04:49

de de ça et comme ça le serveur il va

play04:51

directement retrouver de quoi vous

play04:52

parler euh ensuite donc j'ai fait des

play04:55

des héritages de classe donc item er

play04:58

donc les items en V par les autres

play05:00

joueurs ils ont juste un prix à 10 un

play05:01

prix à 100 et un prix à 1 en plus et

play05:05

donc le label la quantité ici sera pas

play05:07

utilisé et nos items qu'on vend eux ils

play05:10

ont un prix juste et laamount c'est la

play05:12

quantité donc un 10 ou 100 qu'on vend et

play05:15

une date d'expiration aussi item détail

play05:17

donc là il va y avoir j'ai mis juste

play05:19

pour là pour l'exemple consommable la

play05:21

catégorie et puis éventuellement un

play05:23

niveau ça en réalité ça comporte

play05:25

beaucoup plus de champ et quand vous

play05:27

téléchargez le le client de Dofus ça

play05:29

vous télécharge donc tous ces détails là

play05:31

que vous avez du coup à votre

play05:33

disposition donc qu'est-ce qui se passe

play05:35

là dans mon petit script quand je vais

play05:36

le lancer ça va me créer des un

play05:37

inventaire aléatoire une liste d'items

play05:39

qu'on vend et une liste d'items à vendre

play05:41

ensuite on peut voir que dans mon

play05:43

dossier ressources j'ai des sprit et

play05:45

dans ces sprite là donc j'ai tous mes

play05:47

icônes d'objets que je suis allé

play05:48

honteusement piquer sur Dofus dB donc là

play05:51

je les ai nommés correctement ce qui

play05:52

fait que à aucun moment ils sont liés

play05:54

dans Unity c'est juste que je vais

play05:56

chercher à certains moment une ressource

play05:58

qui s'appelle L le Boulard et il saura

play06:00

que c'est cette image là quand je crée

play06:03

un les nos objets à vendre je vais en

play06:06

ajouter 200 pour l'exemple parce que

play06:08

avoir 200 V c'est un petit c'est une un

play06:10

bonne valeur pour montrer que ça restera

play06:12

fluide quand même et je mets un label

play06:15

aléatoire je mets un prix aléatoire je

play06:17

mets une quantité ind 10 ou 100

play06:20

aléatoire et une date d'expiration

play06:22

aléatoire c'est vraiment juste pour

play06:23

avoir des données un peu brutes pour

play06:25

tester pareil quand on crée un

play06:27

inventaire aléatoire je vais ajouter 200

play06:29

objets parce que on a rarement plus de

play06:31

200 objets dans l'inventaire donc ça me

play06:32

paraissait pas mal j'ai testé avec 10000

play06:34

objets et ça reste

play06:35

fluide vous avez donc le label et la

play06:39

quantité juste vous avez entre 1 et 999

play06:41

de chaque objet ensuite je crée les

play06:43

objets en vente aléatoire par d'autres

play06:45

joueurs donc pour faire un petit peu de

play06:48

volume j'it 10 fois sur tous les objets

play06:51

que j'ai pris à la main donc vous aurez

play06:52

10 exemplaires de chaque objet ce sera

play06:54

pas super logique mais c'est juste pour

play06:56

montrer que même avec un petit peu de

play06:57

volume à afficher ça reste très fluide

play06:59

euh parce que j'avais pas envie de créer

play07:01

euh 50000 objets différents juste pour

play07:03

un exemple

play07:05

HH sachant que tout ça je l'ai codé dans

play07:07

le train quand j'étais en train de

play07:09

revenir de vacances j'avais même pas de

play07:10

souris euh pour euh pour faire ma mise

play07:12

en page et j'ai mis 2 3 heures à faire

play07:14

ça donc c'est vraiment pas un truc euh

play07:16

que qui aurait mis du temps à faire et

play07:19

quand on voit les années de

play07:19

développement j'ai j'ai un peu de mal à

play07:21

comprendre

play07:23

euh euh ensuite il y a donc le reste du

play07:26

script par exemple là ça là ça va être

play07:28

quand on met un filtre pour l'hôtel des

play07:30

ventes en fonction de la catégorie par

play07:31

exemple les ailes ou les céréales bah

play07:33

j'ai fait que ça je suis désolé et donc

play07:35

ensuite ça ça appelle la vente des

play07:36

autres objets donc au début je détruis

play07:39

donc toutes les instances que j'ai créé

play07:41

et pour chacun des objets qui vont être

play07:44

filtrés donc le filtre il se fait ici si

play07:46

par exemple on a commencé à taper du

play07:47

texte ou si on a mis une catégorie bah

play07:49

on va pas afficher ces lignes là parce

play07:51

qu'on va pas afficher toutes les ventes

play07:52

euh ça je le filtre ici parce que je

play07:55

fais tout côté client en réalité c'est

play07:57

bien le serveur qui va filtrer ça avant

play07:59

de vous renvoyer les données euh vous

play08:02

avez donc la création des objets avec là

play08:06

c'est la partie vraiment client une fois

play08:07

que le serveur vous aurait renvoyé les

play08:09

données vous allez mettre en place

play08:10

toutes les lignes et donc les bons

play08:12

icônes les bons prix et tout ça

play08:14

euh pour les objets que vous vendez

play08:17

c'est un peu la même chose c'est pour

play08:18

chacun des objets qu'on vend donc ça

play08:20

c'est on le récupère aussi quand on se

play08:22

connecte par exemple le serveur va nous

play08:24

dire voilà tous les objets que vous avez

play08:25

en vente et à chaque fois que vous allez

play08:26

faire une vente bah vous allez retirer

play08:28

l'objet concerné et comme ça vous allez

play08:29

pouvoir garder une liste à jour sans la

play08:31

redemander en permanence ici c'est

play08:33

l'inventaire donc là c'est quand on

play08:35

affiche l'inventaire euh donc j'affiche

play08:37

des lignes de CIN il y a des il y a cinq

play08:39

cases à chaque fois et donc je fais des

play08:41

instances comme ça et je modifie juste

play08:43

là l'apparence de de la grille donc on

play08:46

va passer à la démo pratique euh ce que

play08:49

j'ai fait c'est que quand on fait une

play08:50

recherche ici si on tape que une ou deux

play08:52

lettres ça fait rien je recherche à

play08:54

partir de trois lettres parce qu'en fait

play08:55

ça va sinon générer une requête à chaque

play08:57

fois qu'on tape une lettre et c'est pas

play08:58

forcément top parce que les deux

play09:00

premiers lettes qu'on va taper vont pas

play09:02

du tout filtrer un nombre assez grand

play09:03

d'objets et du coup en Kama ils vont

play09:05

faire des requêtes sur leur serveur et

play09:07

des filtre sur leur base de données deux

play09:08

fois pour rien donc si on veut les

play09:11

potions on va taper potion par exemple

play09:13

et là ça nous filtre toutes les potions

play09:14

donc vous allez les voir tout venir 10

play09:16

fois mais vous avez vu là ça s'est

play09:18

affiché en 100 millisees donc 1 diè de

play09:21

secondes ce qui est plutôt ok pour la

play09:22

réaction et et vous voyez j'ai quand

play09:24

même pas mal d'objets donc j'ai mis bon

play09:26

j'ai pas mis les niveaux j'ai mis des

play09:27

prix aléatoires voilà euh quand on

play09:30

clique ça nous affiche donc le sous euh

play09:32

le sous-menu à chaque fois qu'on peut

play09:34

refermer et là on a le bouton Acheter

play09:35

qui lui enverrait une requête au serveur

play09:37

pour dire bah je veux acheter l'objet de

play09:39

cette idée-là puisque du coup le serveur

play09:40

nous enverrait bien l'idée si je veux

play09:42

euh filtrer par exemple les céréales je

play09:45

peux cliquer là et là j'ai mis les

play09:47

céréales et exactement pareil j'ai

play09:49

toutes les céréales avec à chaque fois

play09:51

pareil tout ça on voit que c'est très

play09:54

réactif euh pareil pour l'inventaire si

play09:56

je veux l'afficher j'ai juste à cliquer

play09:58

sur ce bout bon là ça je l'ai fait pour

play10:00

que vous puissiez voir en temps réel

play10:02

c'est comme si on appuyait sur I dans le

play10:03

jeu pour afficher l'inventaire donc

play10:04

quand je vais relâcher le bouton ça va

play10:06

ça va commencer le le script donc là

play10:08

vous voyez ça c'est fait en 50

play10:09

milliseces et du coup j'ai quand même

play10:11

pas mal d'objets on a rarement autant

play10:12

d'objets dans son inventaire et c'est

play10:14

c'est extrêmement fluide pour le

play10:17

coup pareil on peut rechercher là je

play10:19

recherche le blé bon voilà là j'ai mis

play10:21

que deux que deux caractères puisque

play10:24

comme on a déjà l'inventaire côté client

play10:26

rechercher là-dedans on va pas faire de

play10:27

roquet côté serveur donc on peut être un

play10:30

peu plus tolérant sur sur la flexibilité

play10:32

du truc eu côté vente donc vous avez vu

play10:36

ça c'est dessiné en 161 millisees donc

play10:39

là c'était toutes les ventes qu'on fait

play10:41

donc j'en ai mis vraiment beaucoup

play10:42

beaucoup beaucoup j'en ai mis 200

play10:44

sachant que normalement vous avez jamais

play10:46

200 objets en vente mais 161 misees ça

play10:48

reste ok quand on clique sur un objet

play10:50

bon ben j'ai mis aussi pareil en

play10:52

aléatoire quel objet c'est à quel prix

play10:55

on le vend la 91 kam la quantité qui va

play10:58

varier le temps restant le prix moyen et

play11:00

puis là les autres objets actuellement

play11:02

en vendre pour qu'on puisse si on veut

play11:04

baisser le le prix comme ça et quand on

play11:06

appuyerait sur sur Entrée ça enverrait

play11:08

au serveur cet objetl IDT je veux

play11:11

modifier le prix et le serveur

play11:13

s'adapterait en conséquence pareil pour

play11:15

les checkbox c'est ça qui bug

play11:17

actuellement j'ai l'impression surofus

play11:19

et je ne sais pas du tout comment ils

play11:21

ont fait pour faire bugger un truc

play11:22

pareil parce qu'il y a rien de compliqué

play11:25

euh je vais pas détailler le code que

play11:27

j'ai fait mais si vous êtes intéressé je

play11:28

vais le mettre il y aura le lien dans la

play11:30

description pour télécharger le projet

play11:31

Unity et vous pourrez voir un petit peu

play11:32

comment ça marche euh voilà là on va

play11:35

passer maintenant à la partie serveur

play11:37

donc vous allez me dire oui c'est super

play11:40

mais tout côté client c'est normal que

play11:41

ce soit instantané donc ça c'est ce que

play11:44

ressemblerait le l'objet que vous

play11:45

enverrez le serveur quand vous faites

play11:47

votre requête donc je vais vous montrer

play11:48

après le côté serveur combien de temps

play11:50

ça prend euh d'abord juste la taille de

play11:53

la requête là vous avez une liste

play11:55

d'objets en vente donc le prix par 1 par

play11:57

10 et par 100 et euh le label donc là

play12:00

vous avez un identifiant qui est euh

play12:03

l'identifiant du label par exemple ça ce

play12:05

serait l de Scar à feuille rouge sauf

play12:08

que vous allez pas euh le serveur va pas

play12:10

vous l'écrire comme ça à chaque fois

play12:11

parce que c'est ça prend beaucoup de

play12:12

place pour rien euh donc c'est beaucoup

play12:14

plus simple de mettre un truc comme ça

play12:16

sachant que votre client DOFUS lui il

play12:18

sait convertir ça en L de Scar àfeuille

play12:19

rouge vous voyez que là même si j'ai 200

play12:21

objets en vente bah j'ai pas beaucoup de

play12:24

texte au final le le fichier fait une

play12:26

quinzaine de kilos quand il est quand il

play12:28

est compressé donc 15 kg c'est rien du

play12:30

tout vous pouvez avoir votre débit qui

play12:33

est en méga ou voire en giga pour les

play12:35

meilleures fibres si vous êtes à même 10

play12:37

mases qui est une mauvaise fibre vous

play12:39

allez faire 10000 kg par seconde donc

play12:43

envoyer 20 kg de texte c'est quelque

play12:46

chose qui est largement à la portée de

play12:47

Dofus et ça prendrait normalement une

play12:48

fraction de

play12:50

seconde donc là vous avez la classe post

play12:53

graisse donc je vais pas détailler post

play12:55

graisse parce que j'ai déjà fait des

play12:56

vidéos là-dessus sur la chaîne euh vous

play12:58

avez AZ donc le prix par 1 par 10 et par

play13:00

100 le nom de l'objet et puis vous avez

play13:03

par qui ça a été posté donc ça c'est une

play13:05

jointure à un utilisateur l'identifiant

play13:08

unique c'est ce qui permet de retrouver

play13:09

l'objet que vous achetez quand vous

play13:11

faites votre commande depuis le jeu et

play13:14

euh vous voyez qu'il y a pas grand

play13:15

chchose de plus cette table là elle doit

play13:17

être mise à jour à chaque fois que

play13:18

quelqu'un fait une vente si le prix est

play13:21

le plus bas possible alors on va mettre

play13:22

à jour pour que les clients qui

play13:24

recherchent les prix puissent voir le

play13:25

plus bas possible comme ça ça permet

play13:26

d'avoir une table avec une seule ligne

play13:28

par objet pour les plus bas pr comme ça

play13:29

quand un joueur fait une recherche il a

play13:31

directement les infos qui lui plaisent

play13:33

ça ça nous donne un ensemble de requê

play13:35

SQL qui s'appelle une migration et qui

play13:37

va pouvoir être exécuté pour créer notre

play13:39

base de données donc on

play13:43

l'exécute tac donc vous pouvez voir que

play13:45

ici tout c'est bien créé et dans ma base

play13:47

de données ici si je refres j'ai une

play13:50

table avec un prix par 1 par 10 par 100

play13:53

un nom d'objet et puis qui l'a posté

play13:55

donc ça c'est la relation avec la table

play13:57

utilisateur qui est ici côté serveur

play13:59

donc qu'est-ce qui se passe là j'ai créé

play14:01

j'ai pris une petite liste de label pour

play14:03

avoir des objets bien spécifiques avec

play14:05

pas mal de potions notamment et je vais

play14:08

donc tous les ajouter ici donc je mets

play14:10

un prix aléatoire je mets un prix par 10

play14:12

par 100 aléatoire et le label en

play14:14

question ensuite je vais en insérer

play14:17

10000 donc là c'est juste pour voir le

play14:19

le temps de travail que ça prend ce

play14:21

serait 10000 objets donc là j'ai pas

play14:22

pris des noms j'ai pris donc des UID

play14:24

aléatoires donc chaque objet ce sera une

play14:27

suite de chiffr et de lettres complè

play14:29

aléatoire mais c'est juste pour donner

play14:30

un exemple encore une fois voir le temps

play14:32

que ça prend à insérrer et ça en fait ça

play14:34

se passerait à chaque fois que quelqu'un

play14:36

fait une vente ou quelqu'un fait un

play14:37

achat

play14:38

euh pareil ensuite je vais faire une

play14:41

recherche ça ça correspondrait à la

play14:43

recherche qu'on a fait au début quand on

play14:44

veut acheter un objet là on voudrait

play14:46

rechercher tout ce qui contient potion

play14:48

donc ça reviendrait à taper potion ici

play14:51

et quand on tape potion ça va demander

play14:53

au serveur et ça va lui dire bon bah

play14:55

affiche-moi tout ce qui contient potion

play14:57

donc là il va faire la requête ça va

play14:59

nous afficher en combien ça va nous

play15:00

afficher en combien de temps il a mis

play15:02

pour la faire et ensuite je vais faire

play15:04

une recherche juste de volume je vais

play15:05

chercher les 100 premiers objets 100 tri

play15:07

spécifique pour vous montrer un petit

play15:08

peu à quoi ça

play15:10

ressemble donc c'est

play15:16

parti voilà donc là on a inséré 10000

play15:19

lignes en 13 secondes donc on est quand

play15:22

même pas mal 10000 lignes en 13000

play15:26

millisecondes ça fait environ 1

play15:28

milliseconde par insertion donc c'est

play15:30

relativement raisonnable comme temps de

play15:31

traitement

play15:33

ensuite on a ici la recherche donc

play15:36

potion troué en 27 miseces donc parmi

play15:38

mes 10000 objets différents en vente il

play15:41

a trouvé 14 potions là j'affiche juste

play15:43

le premier donc vous voyez le prix qui a

play15:45

été mis aléatoirement et puis donc la

play15:47

potion là c'est la potion de

play15:48

transformation en ballon qui a été prise

play15:50

en premier mais il y a bien les 14

play15:51

objets ça c'est ce qui se passe

play15:53

ici ensuite je fais une deuxième

play15:56

recherche là je prends sans objets

play15:57

aléatoires donc là ça ça prend aucun

play15:59

temps parce qu'il y a pas vraiment de

play16:00

filtrre il a pas besoin de chercher pour

play16:02

voir ok est-ce que c'est le bon nom

play16:03

est-ce que c'est le bon nom est-ce que

play16:04

c'est le bon nom et là il me les trouve

play16:06

en 3 milliseondes et les 100 objets il

play16:07

pèsent 14 kg et les 14 objets donc là

play16:10

j'ai mis juste le début de à quoi ça

play16:12

ressemblerait le la donnée sachant que

play16:14

là il y a un identifiant qui est très

play16:15

long on peut faire des identifiants plus

play16:17

courts si on sait qu'on va pas avoir

play16:18

beaucoup de données dans la base ici

play16:20

théoriquement s'il y a 10000 objets

play16:22

différents dans Dofus il y aura pas plus

play16:24

de 10000 identifiants différents vous

play16:26

avez le prix ici en 1 10 et 100 et le

play16:29

label et là vous voyez que le label il

play16:30

est en texte plein ce qui fait que des

play16:32

fois c'est un petit peu long donc ça

play16:34

prend aussi beaucoup de volume si ça on

play16:35

le remplace par un ID comme je disais

play16:37

ici c ces idées ici bah ce sera beaucoup

play16:40

plus court parce que ça ira de 0 à 9999

play16:44

par exemple si on veut regarder notre

play16:46

base de données ce qu'elle contient donc

play16:48

il y a bien plein d'objets comme ça donc

play16:50

au début les vrais objets que j'ai

play16:51

insérés et puis après des objets avec

play16:52

des noms complètement farfelus et vous

play16:55

avez à chaque fois les prix et quand on

play16:56

fait notrequête SQL donc là on voit qui

play16:58

la posté donc c'est l'utilisateur 9 DD

play17:01

57 et ça ça correspond à celui-là néo ce

play17:04

qui a été pris au

play17:05

hasard voyez quand on fait notrequête en

play17:08

fait ça revient à faire item label iLike

play17:12

donc ça ça veut dire insensible à la

play17:14

casse et égal avant ou après si par

play17:16

exemple je veux chercher les spirituels

play17:18

je peux taper pire et je vais avoir

play17:20

toutes les trucs qui contiennent

play17:21

spirituel et c'est vous voyez

play17:23

excessivement rapide euh c'est en fait

play17:26

quasiment instantané donc quand on

play17:28

combine les temps de réaction très

play17:30

rapide les temps de transfert de

play17:31

fichiers très rapide et les temps

play17:32

d'affichage très rapide je comprends pas

play17:34

que ça lag en fait parce que ça devrait

play17:37

pas laguer quand on peut jouer à des

play17:40

jeux comme Red Dead redomption 2 en

play17:42

bonne

play17:43

fluidité on a on a démontré qu'on avait

play17:46

des cartes graphiques assez puissantes

play17:48

pour faire des affichages

play17:49

fluides c'est juste une petite vidéo que

play17:53

je voulais faire comme ça si en Kama ils

play17:55

ont des questions et qu'ils ont envie de

play17:56

de mes bons services je les aiderai avec

play17:58

grand plaisir plisir parce que

play17:59

j'aimerais bien que ce projet aboutisse

play18:00

au mieux moi je vous dis à plus et à la

play18:03

prochaine pour d'autres vidéos

Rate This

5.0 / 5 (0 votes)

Etiquetas Relacionadas
Dofus UnityGame UpdatePerformance ReviewDeveloper InsightsUnity EngineBeta TestingGame DevelopmentUser ExperienceTechnical AnalysisCommunity Feedback
¿Necesitas un resumen en inglés?