Concours - Chat + Protocole : Recherche de participants
-
Salut tout le monde,
Je vous en avez parlé il y a 3 semaines environs, j’avais une idée de concours mais il fallait que je prépare le terrain histoire que tout ça se concrétise. C’est aujourd’hui chose faite, je vous propose le concours suivant :
La mise en place d’un client de chat multi-modulaire qui permettra de liée par exemple le site MFF avec le chat de minecraft et avec un chat se trouvant sur votre launcher par exemple Bref, peut importe le support, vous pourrez vous connecter à la shoutbox
La partie core du serveur est déjà opérationnelle, c’est le travail que j’ai fait en amont. Le concours ne se porte que sur le client. Il me reste encore quelques truc a bosser dessus (Empêcher les injections XSS, améliorer le module par défaut et faire le module du forum), mais le nécessaire est la
#Le concours serait divisé en 2 niveaux :(Le concours serait divisé en 2 niveaux
1 - D’un coté, une partie pour les débutants qui consisterai à implémenter le core du client en java standard.
Ça reviendrait dans un premier temps à implémenter une interface que je fournirais et dans un second temps utiliser les fonctions de cette interface pour construire le core.
Puis ensuite utiliser ce core pour créer un mod qui permettra de se connecter au core du chat via minecraft.
Modèle de conception bottom-up donc C’est à dire qu’on construit d’abord de petites briques et qu’ensuite on les assemblent. Il existe un autre modèle qui s’appel top-down et qui comme son nom l’indique, est l’inverse du premier modèle.
Dans le modèle top-down, on fait les plans, puis on pose les briques. Généralement d’instinct les gens utilisent le top-down, ici se sera bottom-up, mais dites-vous qu’en amont lors de la construction de l’interface, tout a été pensé façon top-down
(Bon ça c’était pour la petite anecdote :P)2 - D’un autre coté pour ceux étant plus à l’aise ou ceux aimant le challenge
Faire exactement la même chose, mais cette fois-ci avec des technos web : JS, HTML, CSS.
Dans le but de faire un module de chat hautement personnalisable qui puisse être incrusté dans le forum.
Pas d’interface en Javascript mais il faudra vous baser sur l’interface que je donnerai en java. C’est à dire que vos fonctions devront utiliser le même nom.
Comme ça on gagnera du temps par la suite, et il faut que le projet soit construit de manière logique (voir plus bas)L’avantage des 2 niveaux, c’est que tout le monde va pouvoir participer. Le seul point qui demande un peu plus de compréhension et de réflexion, c’est le transfère de données via le protocole UDP.
Dans le niveau 2, il y a la création d’une IHM en plus et le fait d’utiliser un langage non objet (Javascript) mais à la limite ce dernier point n’est pas vraiment une difficulté.#Après le concours(Après le concours)
Si le développement guidé de ce genre d’application vous plait, on pourra j’espère mettre en place des groupes de travail guidé et cohérent pour continuer les développements des applications clientes.
Ce qui comprend notamment l’ajout de modules clients pour pouvoir interagir avec le module spécifique du serveur.
(Car à la fin du concours les application clientes ne seront prévu que pour interagir avec le core du serveur et pas les spécificités de son module)
Du coup, les clients seront multi-modulaires, d’où aussi cette possibilité de faire des groupes de travail plus facilement.
(Mais bon, ça pour le concours, que se soit dans le niveau 1 ou 2, pas la peine de se prendre la tête la dessus, de la manière dont le projet sera construit si c’est bien fait, on pourra rendre l’application modulaire assez rapidement )#But du concours(But du concours)
Le but de se concours pour ceux qui se considère comme “apprenant” (même si dans l’info nous sommes tous voué à être des apprenants perpétuels :P) et les autres, est de se divertir et bien sûr de se fixer des challenges accessibles.
Mais c’est surtout un excellent entrainement en Java puisqu’on taff le réseaux, le polymorphisme, les applications modulaires etc… bref, plein de chose qu’on ne voit que rarement avec le modding mais qui sont TRÈS TRÈS utile quand on veut faire de gros mods en équipe. De toute façon tout ce qui sera travaillé dans le concours ou dans la suite du développement vous aidera énormément dans vos mods. Tant au niveau conception/architecture que codage pure et dur#Récompense(Récompense)
Quoiqu’il arrive, tout les participants ayant rendu quelque chose et ayant fait un minimum d’effort (juste un hello world ça compte pas bande de troll :P), aurront leurs noms mentionnés de manière visible dans les contributeurs de l’application.
Pour le gagnant de la première partie, son mod sera utilisé in game.
Pour le gagnant de la seconde partie, son client chat sera utilisé sur le forum.
Ce qui à de quoi être très attrayant je trouve, surtout que le mod est prévu pour tout les joueurs de minecraft et tout les forums
Imaginez votre client utiliser sur d’autre forums, vous aurez de quoi être fier de vousPour les 2 gagnants : mention spéciale dans les crédits de l’application, puis on prendra leur projet pour la suite du développement (groupe de travail si on y arrive etc… bref, j’en ai parlé plus haut).
Par contre, il est possible qu’il n’y est pas de gagnant si le résultat final n’est pas satisfaisant et qu’on ne peut pas le reprendre pour la suite du développement.
#Pour conclure(Pour conclure)
Le résultat global du projet sera une oeuvre collective bien entendu
S’il y a des mots qui vous font peur dans tout ça, ne vous inquiétez pas, vous verrez qu’in fine ce n’est pas si compliqué que ça Et vu que c’est très guidé, vous saurez exactement quoi faire et par où commencer, surtout pour le 1er niveauPour lancer le concours, j’ai besoin de savoir combien de personne souhaite y participer et dans quel niveau, car il faut un minimum de participant pour que le concours ait un intérêt
-
@Blackout:
Faire exactement la même chose, mais cette fois-ci avec des technos web : JS, HTML, CSS.
Pour cette partie-ci, pourquoi veux-tu utilisé JS plutôt que PHP?
-
J’ai une question, comment gérer les pseudos des membres, car lié avec le forum pourquoi pas, mais cela ne risque t’il pas d’être contraignant au niveau de la vérification de l’utilisateur du pseudo?
-
@‘Superloup10’:
@Blackout:
Faire exactement la même chose, mais cette fois-ci avec des technos web : JS, HTML, CSS.
Pour cette partie-ci, pourquoi veux-tu utilisé JS plutôt que PHP?
Tout simplement parce que PHP est une techno serveur et que le concours ne porte que sur le client
@‘totos51’:
J’ai une question, comment gérer les pseudos des membres, car lié avec le forum pourquoi pas, mais cela ne risque t’il pas d’être contraignant au niveau de la vérification de l’utilisateur du pseudo?
Voici un schémas qui récapitule un minimum les choses :
Je gère déjà le système d’authentification et de clef d’utilisateur pour les messages
Il n’y a pas de soucis a se faire avec ça, tout a été fait en amont. C’est le module qui gère tout ça, mais de base, nous utiliseront un module que j’ai créé par défaut et qui n’est pas lier au forum. (J’ai pas envie de n’avoir que des messages de test sur le forum ( les admins non plus j’imagine xD) et que certains se retrouvent bannis 30 minutes pour avoir fait + de 5 mauvaise requête d’authentification par erreur xD
Je ne poste pas le code source du serveur car je n’ai pas envie de vous embrouiller, puis il n’est pas entièrement finit, mais comme dit dans le post initial, le nécessaire est là pour débuter le concours.
Je posterai le protocol et un exécutable pour lancer le serveur par contre, sans ça, vous ne pourrez rien faire -
Pas de volontaire ?
J’ai fait l’interface que vous devrez implémenter.
J’ai estimé le temps du concours à 2 semaines grand maximum en prenant en compte que vous avez une autre vie à coté du forum :P. -
Passe nous l’interface
Je regarderais à l’occasion -
Je pense que les 3/4 des membres du forum ne manipulent pas le HTML, le CSS et le JS. Pour ce qui est de l’implémentation du code dans un client Minecraft, c’est pas très facile à faire, regarde Mojang, ils ne l’ont fais qu’à partir de la 1.7.4, sachant qu’en plus, ils utilisent une librairie externe fournie par Twitch.
-
package fr.mff.bridge.client.core; /** * Provide a interface between client and server message * Each time something is send to the server, server will send back the request result code. * @author EyZox for minecraftforgefrance.fr * */ public interface ICoreOut { //Output /** * Connects to the server. * Server will send back a session String of 32 max characters. * @param login * @param pass */ public void connect(String login, String pass); /** * Disconnects from the server * */ public void disconnect(); /** * Posts a message to the server * * @param message */ public void post(String message); /** * Deletes all message posted before the date in parameters * @param timestamp A timestamp representation of date */ public void clear(long timestamp); /** * Posts an anonymous message to the server * @param message */ public void broadcast(String message); /** * Send a request to get all message which have their id > the id in params * @param id The client last message id or -1 to get all message */ public void getMessages(int id); /** * Sends a request to get all connected users */ public void getWho(); /** * Sends a command to the server * @param cmd */ public void sendCommand(String cmd); }
Voila l’interface a implémenter. Tant que vous n’avez pas le prototype, vous ne pourrez pas commencer.
Vous disposerez aussi d’une interface déjà implementé qui vous servira pour contruire votre programme.package fr.mff.bridge.client.core; public interface ICoreIn { public void readWho(String user); public void readCommand(String command, int status); public void readMessage(String date, String author, String message); }
Donc cette dernière est déjà implémenté, vous n’aurez qu’a utiliser les méthodes.
@Superloup :
C’est pour ça que je propose 2 concours ^^
Pour l’implémentation dans le client minecraft, ce sera très facile, on utilisera un mod, c’est déjà ce que tout le monde fait ici -
Dommage que ça n’intéresse pas grand monde.
Pourtant 2 personnes du forum sont venu me poser des questions pour savoir comment manipuler la BDD de son site ingame. -
Une question, avec ton système est-il possible de faire plusieurs channels? Avec des droits différents, selon les channels.
-
Non pas pour l’instant, mais j’ai coder la chose de sorte a ce que l’implémentation de cette fonctionnalité soit ridiculement simple
-
Perso, ça m’intéresse pas vraiment ce concours, donc je n’y participerait pas.
Cependant, pour ceux qui débutent en programmation, c’est très bien comme truc a faire !
Une GUI, un connexion serveur <–> client, etc… qui permet de bien bosser sur le networking