J'ai passé des centaines d'heures dans les jeux selon les statistiques de Steam, et des milliers, si vous comptez sur toutes les plateformes. Mais ce qui m'a frappé, c'est le rapport de temps dans certains cas. Il m'a fallu 8,5 heures pour terminer le grand Bioshock Infinite, mais Sacura Clicker a pris 12 minutes de plus. Clicker Heroes a plus de quarante heures, presque la même chose que Torchlight 2. L'astuce est que je me souvenais et que j'avais une bonne idée du temps passé sur les gros matchs. Mais les petits jouets ne se souvenaient pas complètement, ils ont volé mon temps inaperçu, prenant cinq à dix minutes pendant des semaines et des mois.
Quand j'ai réalisé cela, j'ai pensé que ce serait bien de visser une turbine sur cette ballerine. Autrement dit, pour faire un timekiller utile - un jeu simple qui ne volera pas, mais investira mon temps pendant cinq à dix minutes. Par exemple, dans le vocabulaire anglais.

Une fois, j'ai acheté un tas de cartes avec des mots anglais et je les ai lues dans un minibus en route vers le bureau. Puis il a quitté le bureau et l'habitude a disparu, j'ai oublié les cartes. Il a dû secouer son sac à dos, et quand différents mots sont tombés de la poche supérieure avec un ventilateur, j'ai réalisé - c'est le match 2! Un jeu dans lequel vous devez faire des paires (contrairement au match 3, où ils en prennent trois ou plus).
Les Timekillers avec le principe de «faire un couple» sont connus depuis longtemps - par exemple, le jeu de mahjong solitaire sur ordinateur (à ne pas confondre avec le jeu chinois classique de jeu, joué par Sammo Hung dans les films d'action de Hong Kong).
KDE Games MahjongMahjong solitaire a une variante simplifiée de Mahjong Connect, où les puces sont disposées dans une disposition simple, sans pyramides frisées. Sur Wikipédia, vous pouvez lire qu'il s'appelle Shisen-Sho, mais si vous voulez google samples, le prénom sera plus adapté.
Je soupçonne que la première version a été faite par un programmeur comme moi, qui n'avait aucune expérience dans la programmation d'un mahjong à part entière avec une mise en page compliquée - mais le jeu est soudainement devenu populaire et a engendré sa propre branche de clones.
Jeux KDE Shiseen-sho ou Mahjong ConnectRegardez les cartes de mots et le Mahjong Connect - ils s'emboîtent parfaitement - et il y a des couples. Il ne reste plus qu'à transformer chaque carte en une paire de puces.
Puces et conception de gameplay
Cinq nouveaux mots à chaque session et quelques mots répétés des précédents - c'est l'idée que j'ai commencée. Cela signifiait qu'au moins 20 jetons devaient être impliqués dans le jeu.
Sur chaque puce, il fallait placer au moins un mot avec une bonne lisibilité. Les cartes en papier vous permettent de placer beaucoup de texte, mais les puces avec de telles proportions seraient trop grandes. De plus, je voulais vraiment conserver le sentiment de "comme si le mahjong", et cela signifiait qu'une puce de jeu devrait être très compacte dans la forme et le texte. Si vous tournez la phalange du mahjong à 90 degrés, vous obtenez suffisamment d'espace pour le texte.
Ayant modélisé une disposition de jeu avec de telles jointures dans un éditeur graphique (Fireworks 2003, si vous êtes curieux), j'ai vu que le jeu avait l'air assez ennuyeux. Après avoir regardé à nouveau les captures d'écran avec des mahjongs, j'ai essayé d'ajouter différents éléments graphiques pour animer l'image. Et puis cela m'est apparu - vous pouvez simplement ajouter une gemme à chaque paire. Ensuite, il fonctionnera non seulement comme un élément d'animation, donnant au moins une ressemblance externe aux jouets occasionnels, mais aussi comme un indice.
Version provisoire du terrain de jeu avec différentes options pour les jetonsLa version finale s'est avérée comme ceci - trois gemmes pour 10-11 paires de mots. Cela a donné un indice avec une chance de coïncidence aléatoire d'environ 25%. Si vous oubliez le mot - vous pouvez voir les puces avec les mêmes mots.
Un élément de conception supplémentaire qui accélère l'orientation est un drapeau gris marquant tous les mots dans une langue (russe). L'idée originale était d'étiqueter un élément d'une paire, pas un signe national, donc je n'ai pas fait de tricolore ou quoi que ce soit d'autre.

Cela ressemble à de la triche, mais je ne voulais pas faire d'examen ou de test de connaissance complet. L'examen est stressant et j'avais besoin du gameplay le plus simple et le plus agréable pour que pendant le jeu, un sentiment de victoire et de confiance en soi se forme. Je pense que c'est l'une des qualités les plus importantes des tueurs de temps cultes comme Bejeweled ou Zuma. Le joueur suit la frontière optimale entre ses compétences et son incapacité, s'amuse et revient encore et encore dans le jeu.
Qu'en est-il des règles - J'ai franchi une autre étape dans la simplification de Mahjong Connect et m'a permis de créer des paires de puces correspondantes, et pas seulement celles qui ont été déverrouillées. Il y a deux raisons à cela. La première est que je n'avais pas de code de mahjong prêt à l'emploi et que j'ai testé le jumelage. La seconde est que j'ai trouvé que les puces avec des mots dans différentes langues compliquent en elles-mêmes le gameplay et les associer crée déjà la sensation d'un jeu.
Pour l'avenir - si vous établissez une connexion à part entière et du mahjong avec les mêmes puces, cela deviendra en fait beaucoup plus facile à jouer. Le fait est que des restrictions supplémentaires sur les jetons restreindront le choix et que le joueur ne pourra vérifier que tous les jetons qui conviennent aux gemmes qui sont gratuites pour les gemmes - et cela donnera une forte augmentation de la probabilité de coïncidence de 25% à 50 ou même une centaine, selon la disposition.
Mais peu importe à quel point il est facile de jouer ou de tricher, l'objectif principal d'un tel jeu sera toujours atteint - le cerveau du joueur correspondra constamment à quelques mots dans leur langue maternelle et étrangère. Si quelqu'un réussit à faire un tel tueur de temps, alors des dizaines d'heures se transformeront en un avantage pour les joueurs, peu importe comment ils trichent. Bien que l'apprentissage conscient soit certainement toujours meilleur.
Programmation
Pour ce projet, j'ai utilisé du JavaScript normal et le moteur de jeu Phaser.io 2.10.2. Pourquoi les jeux HTML5 sont bons - ils vous permettent de fournir rapidement un accès pour tester et exécuter des prototypes. J'ai déjà réussi à m'assurer sur d'autres projets que comme moyen de créer un jeu multi-plateforme HTML5 n'est pas très bon (un inconvénient notable sur FPS sur des téléphones faibles, des problèmes de compatibilité entre navigateurs, la nécessité de repenser les passerelles vers l'API native dans certains cas). Mais en tant qu'outil de construction de prototypes Web et de jouets Web, c'est un bon choix.
Comme dans le cas de la
caravane post-nucléaire , j'ai commencé à développer en compilant un modèle de l'état du jeu - c'est-à-dire une classe de données avec des champs qui reflètent simplement les progrès actuels du joueur.
function GameState() { this.pairKey = "ru-en";
Pour enregistrer et charger l'état du jeu dans le JS basé sur un navigateur, il suffit de sérialiser et de désérialiser ce modèle lors de l'écriture et de la lecture sur le stockage local - et ainsi nous obtenons la progression enregistrée sur l'ordinateur de l'utilisateur en seulement quelques lignes.
Mettre des puces sur le terrain, traiter les clics de souris et un écran tactile dans Phaser sont mis en œuvre tout simplement. Il a la classe Group, qui vous permet d'aligner automatiquement tous les objets visuels qui y sont ajoutés en fonction d'une grille donnée.
Cependant, seuls les rectangles réguliers (ou grilles, si vous définissez un grand pas) peuvent être effectués de cette façon, ce qui semble assez primitif. Par conséquent, j'ai écrit ma fonction de mise en page, dans laquelle chaque deuxième ligne est décalée de la moitié des puces - il s'avère que la disposition des "briques".
Mais j'ai dû résoudre les principaux problèmes avec le dictionnaire.
Dictionnaire et jeux de polices
La première chose qui attirera l'attention de tous, s'ils ne se sont pas déjà précipités - la longueur des puces n'est pas suffisante pour afficher correctement tous les mots du dictionnaire. Vous pouvez résoudre ce problème en modifiant arbitrairement la taille de la police en fonction de la longueur du mot.
Différentes tailles de police pour différentes longueurs - cela semble un peu fou, à mon avisMais cette option me semblait trop mauvaise, j'ai donc décidé de filtrer le dictionnaire et de ne laisser que des mots de 9 caractères au maximum dans les deux cas (russe et anglais). Dans mon cas, cela était permis, car je prenais le dictionnaire des fréquences comme base - c'est-à-dire que les mots qu'il contenait étaient triés par fréquence d'utilisation. Dans les mille premiers mots de plus de 9 caractères, il y en avait très peu, et dans les dix premiers, c'est-à-dire les plus fréquents, il n'y en avait pas du tout.
Une limite de 9 caractères convient au stade de la vérification du concept pour les mots les plus courants, mais si vous développez un prototype, tôt ou tard, vous devrez faire quelque chose. Très probablement, modifiez les proportions des puces ou augmentez leur taille. Pour la langue allemande, cela devra être fait même dans le cadre des premières centaines de mots les plus populaires - et je veux aussi tester l'allemand, rappelez-vous les années scolaires.
Le deuxième point est la coïncidence visuelle des lettres en anglais et en russe. Le russe «non» et l'anglais en majuscule coïncident souvent juste avec le pixel. Un dictionnaire de fréquence améliore cet effet car ces mots courts se retrouvent dans une leçon presque au tout début.
Le russe NON et l'anglais HE en majuscules se ressemblentLe drapeau gris a aidé faiblement, les mots étaient confus. Après les premières plaintes des testeurs, j'ai changé le cas des inscriptions en minuscules habituelles. Et puis j'ai vu le bug suivant - les lettres ont commencé à danser, en quelques mots flottant verticalement par un pixel entier.

La raison en était que j'ai utilisé une seule police raster pour la sortie (formée comme un ensemble d'images de lettres de la même taille), en la mettant à l'échelle selon les besoins. Dans la plupart des cas, cela se passe bien, mais les lettres rondes apparaissent en petites lettres - parfois un pixel est mangé, ce qui donne l'effet de la danse.
Moralité: une police raster pour les petits textes doit être préparée immédiatement à la bonne taille
Après avoir préparé une police séparée, tout le monde a arrêté de danser et s'est tenu strictement le long de la ligne de base.

Si vous utiliserez Phaser ou un autre moteur HTML5 dans vos projets, voici une autre astuce: affichez immédiatement la police raster dans la couleur qui sera utilisée dans le jeu. Sinon, cela met un stress supplémentaire sur le processeur, ce qui, dans les jeux avec un tas d'actions et d'effets, peut entraîner une forte affaissement de FPS. En outre, même dans le dernier Chrome mobile sur certaines tablettes Android, la couleur «non native» spécifiée par la police bitmap par programme peut ne pas s'afficher du tout - la sortie sera par défaut.
Et, bien sûr, le dictionnaire d'un tel jeu est mieux connecté en tant que fichier téléchargeable séparément - cela lui permettra d'être mis à jour si des fautes de frappe ou des options douteuses sont remarquées.
Par exemple, ma version du dictionnaire semble avoir été compilée à partir de tableaux de textes traduits, en tenant compte du contexte, donc le «quoi» dans les premières leçons a été traduit par «cela». Il est clair que dans ce sens cette particule est utilisée beaucoup plus souvent que la question, mais pour un apprentissage sans contexte elle ne convient pas.
Ma principale conclusion de vocabulaire est que les particules et autres mots qui sont très sensibles au contexte ne conviennent pas pour l'apprentissage dans de telles paires pures. Les options de solution que je vois sont de fabriquer un jouet séparé en particules ou de créer des puces avec des textes plus longs. La deuxième option semble plus logique, car vous ne serez pas alphabétisé avec un seul mot et vous devez apprendre pleinement la langue avec le contexte, au moins à l'aide de petites expressions. Et cela signifie - il reste encore beaucoup d'expérimentation à venir!
Tutoriel
Au début, j'ai testé un jeu dans lequel les jetons étaient simplement disposés - et c'était intéressant, car le gameplay était réduit à rappeler joyeusement des expressions déjà connues et cela donnait le sentiment d'une victoire facile, ce qui était nécessaire. Mais j'ai réalisé que cela ne fonctionnerait pas avec une langue complètement inconnue. Par conséquent, j'ai dû ajouter l'option d'apprentissage - avant le début de la leçon, le jeu montre les puces dans les bonnes paires, puis les mélange.

Techniquement, cela est implémenté comme suit - le niveau est initialement présenté comme d'habitude, c'est-à-dire dans un ordre aléatoire. Ensuite, si l'option du didacticiel est activée, une fonction est lancée qui se souvient des coordonnées initiales des puces, leur ajoute une animation de vol et des dispositions en paires de travail, puis tout revient à sa place. Étant donné que le calcul et la préparation du didacticiel ont lieu avant le début du premier cycle de mise à jour (redessiner l'écran), il semble à l'utilisateur que le jeu affiche d'abord les puces dans le bon ordre, puis les mélange au hasard.
Dans le moteur Phaser, Group a une méthode de lecture aléatoire qui fonctionne comme la lecture aléatoire d'un tableau normal, mais met simultanément à jour le Z-index. C'est une fonction très pratique, qui sera certainement utile pour la mise en œuvre de mahjong à part entière et d'autres jeux, où il y a au moins une troisième dimension conditionnelle et les éléments se chevauchent.
L'algorithme du début du jeu semble simple - nous prenons N paires du dictionnaire de paires pour une leçon donnée, en formons des éléments de puce visuels, puis faisons un mélange et les construisons dans une grille - nous obtenons une disposition pseudo-aléatoire.
Le processus inverse a lieu dans le didacticiel - la fonction de tri est appelée sur le tableau de puces, où l'ID de paire du dictionnaire est un paramètre important - de cette façon, les puces sont disposées les unes après les autres par paires, après quoi il reste à les placer sur deux colonnes.
Progrès
Pour suivre la progression, j'ai ajouté de petits indicateurs au menu de démarrage et un astérisque, qui devrait apparaître lorsque tous les niveaux sont terminés en cent mots. La capture d'écran montre une situation artificielle avec une étoile test.

J'ai pris le Sultan avec le visage de Cartman sur Craftpix.net - il a marché dans le même kit gratuit que les diamants. Juste pour pimenter l'économiseur d'écran. Bien que, si vous n'aimez pas les Sultans ou Cartman, j'avoue que le déménagement n'est pas particulièrement réussi.
Conclusions et perspectives
Je suis sûr que le timekiller de la formation est un vrai timekiller, et pas ce prototype que j'ai fait n'est possible. Et lorsqu'ils apparaissent en grand nombre, le monde peut changer pour le mieux. Au minimum, des millions de personnes ne perdront pas des centaines d'heures.
Si vous avez à portée de main un code pour un jeu régulier en combinaison et quelques jours gratuits, essayez d'expérimenter, au moins avec quelques mots. Vous pouvez prendre le
fichier JSON terminé ici . Il a plus de mille paires, je me suis formé avec une marge.
Tous les jeux match3 et match2 - avec des boules, des diamants, des jetons de mahjong, des poissons et des oursons, avec une disposition dynamique fractale comme Zuma ou un champ statique, comme dans la plupart des jeux - c'est essentiellement une tâche de faire des combinaisons, de sélectionner des groupes selon un critère .
Dans les jeux actuels, ce signe ne porte aucune charge utile, les gens combinent simplement des boules rouges et vertes, des bonbons à la gelée rayés translucides et des oursons de marmelade collants. Mais que faire si ces oursons sont saturés de vitamines saines? Je me souviens avoir appris un certain nombre de mots anglais de Fallout et Heroes Might and Magic, ce qui signifie que de telles vitamines existent.
Mon prototype du jeu
peut être testé ici . Il y a un choix de centaines et de niveaux différents, de préservation, de progrès et de milliers de mots anglais les plus courants. La disposition est conçue pour les moniteurs de bureau ou les tablettes. Chaque niveau est conçu pour plusieurs minutes, contient 5 nouveaux mots et 6 répétés des précédents (selon la formule d'échantillonnage aléatoire 3, 2, 1).
Mise à jour 06.13.18 : ajout de transitions entre des centaines de mots et salutations lors du passage du dernier niveau de chaque centaine. Certaines paires contextuelles n'ont pas non plus de sens dans les traductions individuelles. Travail optimisé avec mémoire.