JeuWeb - Crée ton jeu par navigateur
kala : concepteur de Iuki's Land - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Général (https://jeuweb.org/forumdisplay.php?fid=36)
+--- Forum : Présentez-vous (https://jeuweb.org/forumdisplay.php?fid=41)
+--- Sujet : kala : concepteur de Iuki's Land (/showthread.php?tid=601)



kala : concepteur de Iuki's Land - kala - 07-04-2008

Mon prénom ou pseudo:
Mon âge : 27
Ma région : IDF (Clichy)
Mes passions : php, mao
Mon métier : php codeur
Mes études : bac stt option ig puis contrat qualif analyste programmeur option web.

Mes projets, mes réalisations : En pur jeu php, rien d'autre que iuki (10000 lignes de codes bien factorisées). En jeu codé en autre langage que php, pas mal de petits jeux en qbasic quand j'étais jeune et un jeu de baston en blitz basic (3000 lignes de codes).
En php autre que des jeux, un frontend pour un système de vidéo surveillance domotique accessible par internet, et actuellement un intranet technique (40000 lignes de codes) sensé géré l'ensemble du workflow de la boite dans laquelle je bosse.
En scripting php a l'arrache, pleins de micro scripts pour scraper des bases de keywords seo (voir vidéos youtube kalaspace).

Mes compétences estimé dans le PHP/HTML : Je crois que j'ai vu pas mal de choses, je parlerai plutôt de mes positions. Je ne suis pas un fanatique du W3C et des standards (je suis plutôt partisan du "ça marche concrètement sur tous les navigateurs modernes"), je ne suis pas non plus un fanatique de la programmation orienté machin truc ou bidule (chacun fait ce qui lui convient au mieux du moment que c'est efficace)

Mes compétences en "création de jeu" : Il n'y a pas que la technique qui compte, en créant et administrant Iuki's Land, j'ai appris beaucoup de choses "humaines" qui me semblent fondamentales pour faire un jeu (ergonomie, équilibrage du jeu, promotion du jeu), etc.


Comment j'ai connu JeuPHP : Recherche google "jeu php" Smile


RE: kala : concepteur de Iuki's Land - keke - 07-04-2008

bienvenu à toi,

tu sembles avoir une expérience sympatoch sur les jeux. Un petite retour plus détaillé sur Iuki's land serait-il possible ? Tes problématiques, tes coups de génie, tes 'si c'était à refaire ...', et bien d'autre.

Et MAO, tu voulais dire MOA (maitrise d'ouvrage ?) ou MAO (maison de l'arbre et de l'oiseau ?)

Kéké.


RE: kala : concepteur de Iuki's Land - kala - 07-04-2008

mao : musique assisté par ordinateur (renoise + plugins vst, car je suis pas un adepte de cubase, zics sur http://allkala.free.fr/all_kala_music/)



Sinon pour un retour plus détaillé de Iuki's Land écrit un peu à l'arrache Smile

comment l'idée a germer :
pendant mon contrat de qualif, j'avais 3 semaine entreprises et 1 semaine de cours, chaque semaine = 1 langage de prog différent.
Selon les semaines de cours, on pouvait avoir un prof très autoritaire ou très ouverts.
C'est tombé pendant la semaine de windev, le prof très ouvert nous sort un truc du genre après 2 jours de théories, "vous avez les 3 autres jours pour pondre un truc, c'est noté a la fin de la semaine", j'ai eu l'idée de faire un tamagotchi, en utilisant le sgbd proprio de windev (hyperfile). Après coup je me suis dit,
merde, je suis en train de faire un jeu basé sur une base de données, ce qui veut dire que je peux mettre le truc en ligne, puis, kit a faire un jeu, pourquoi ne pas aller au plus loin en faisant un monde virtuel complet !

j'ai donc commencé a étudier l'existant, en premier je suis tombé sur nainwak, puis tous les autres qui existaient à l'époque (mi 2002).



Problématiques et Solutions(coup de génie ? je sais pas vraiment Smile ) :

-techniques d'abord.

.A l'époque tout le monde n'avait pas l'adsl, donc pas de pitié pour la bande passante ! le tableau html de 20 ko servant a afficher la carte s'est vite transformé en un ensemble d'appels de fonctions javascript totalisant un poids moyen de 1 ko, les images de la carte sont dispo dans un kit d'accélération, le joueur peut donc les télécharger et déclarer le dossier local dans lequel les images doivent être lus. il reste donc que les monstres et les objets (qui alimentent progressivement le cache du navigateur)

.Après il a fallu optimiser la partie sql, tout le code est orienté pour faire le moins de requêtes possibles, les tables sont indexées la ou il faut, etc. Dans tous les cas ça reste quand même lourd, car a chaque attaque/déplacement, il faut gérer les éventuels pnj et attaques potentiels qu'ils peuvent lancer + réafficher la map (1 requête par élément : carte, objets, pnj, pj)


.graphiques

.la carte est un quad texturé, rendu sous lightwave en vue aërienne d'une taille de 6144*6144. chaque batiment et arbre a été modélisé a part, rendu en spite. le rendu du quad a été chargé sous photoshop et chaque instance de sprite a été placé sur le quad rendu en pleins d'exemplaires. Cette image global est la carte.
Après quoi, l'image a été découpé en 65536 morceaux de 24*24 pour faire les cases pour le premier kit d'accélération. pour le second kit, la même image a été découpé en portion de 360*360.

.les persos mâles et femelles ont également été modélisé rendu sous lightwave en 24*48. Ils ont ensuite été découpés en plusieurs sprites de plusieurs couleurs pour la peau, les cheveux et les vêtements (d'où la possibilité de choisir homme/femme longueur de cheveux, couleur vêtement, couleur peau = race).

.les objets et les pnj (monstres) sont des gifs animés existant ramassés sur le net (j'ai du me taper 2/3 semaines de ramassage global pour dégoter le top du top en la matière). De nombreux gifs ont été retouchés avec gifsicle faute de transparence bien géré.
seul l'objet rune a été modélisé/rendu sous lightwave et assemble avec gifsicle.


-humains

.Beaucoup de de plaintes de joueurs(moyennes d'âge = 16 ans) se faisant tuer leur perso et voulant récupérer les objets perdus.
.Un forum phpbb dont l'administration a été délégué (pour me permettre d'éviter une gestion communautaire trop lourde et me concentrer sur la partie technique et innovation). Malgré cela, le forum a subi une attaque (spam message insulte) d'un script kiddies a cause d'une dispute entre joueurs, c'est en partie la raison pour laquelle j'ai laissé le jeu de côté.
.Un public un peu inattendu, c'est à dire par mal de joueurs en attente d'une immersion plus profonde laissant place à l'imaginaire, ce qui est communément appelé "role-play". J'ai du me réadapter en créant rapidement la possibilité de se guilder, d'appartenir à un royaume, et en participant à la création d'un scénario pouvant justifier certaines limitation du jeu (pas de transport type cheval, taille de carte limité, etc.)



-ergonomie / équilibre du jeu

.caractéristique des objets(arme, armure, incrémenteur, consommation, parchemin)(plusieurs centaines en tout) et des pnj(100 différents)
faire en sorte qu'il y en ai aucun d'identique, que ceux-ci soient en adéquation avec ce que le gif(animé) représente, que le joueur ai une probabilité forte d'avoir un intérêt à les utiliser en fonction du niveau de son perso.

.caractéristique des pj
trouver des courbes et des conditions d'augmentation raisonnables (ce n'était pas le cas dans la 1 ere version), (échelle logarithmique pour éviter que les anciens soient non rattrapable pour les nouveaux, et pour inciter les nouveaux a jouer au début)

-répartition des pnj
la répartition aléatoire a très vite trouvé ses limites, il a fallu définir des zones de vie sur la carte, avec des probabilités d'affectation par monstre. (genre éviter de mettre un dragon de ouf dans un village et une poule dans le désert).

.probabilité d'obtention des objets sur les pnj
il a fallu trouver des formules très équilibrés pour que les objets convoités se trouvent sur les monstres puissants et vice versa,
la problématique étant que ce sois ni trop facile, sans quoi le jeu est exploité trop rapidement, mais ni trop difficile car risque de lassitude des joueurs, il faut donc faire des calculs prévisionnels en fonction du temps de jeu et de l'évolution potentielle qu'on souhaite pour le joueur idem pour les sous.

.que faire quand le joueur est déconnecté
il a fallu mettre un mode autoréponse au cas ou le joueur est attaqué (sous nainwak, y a 30 pa, ce qui permet 2-3 attaques par jour, sous iuki c'est plusieurs dizaines)

.que faire pour éviter du multi clique quand plusieurs dizaines d'attaques a faire.
un bouton attaque tant que possible
(la fonction a été très longue a coder, puisque le pj ou pnj potentiel peut répondre à l'attaque et ceci récursivement, jusqu'à la mort d'un des 2 combatant (il a fallu faire un pseudo système de cache des données du combat pour éviter les requêtes sql, et délivrer le résultat)


.que faire pour éviter le multi perso par joueur
la, c'est le plan de galérien, j'ai tout essayé (ip, cookie, +trucs de ouf abjectes à décrire),
a part la négociation humaines, j'ai pas de soluces idéales.











mes principales erreurs (en vrac) :

.carte à taille limité, la façon dont j'ai fait la carte (orienté optimisation bp et graphisme correct) fait que celle ci n'était pas modulable (les bâtiments, arbres, chemins, etc, font partie de la carte elle même). Donc si c'était à refaire, j'aurais rendu la carte éditable par des mj pour une extension potentiellement infinie (y aurait eu le problème sql pour la gestion des cases pénétrables/non pénétrables, si carte trop grande, donc plusieurs cartes avec téléportation à la slider comme nainwak mais scrollable (la carte fait 256* 256 cases, l'écran en affiche 15*15)).

.le jeu étant médiéval fantastique, ne pas avoir fait de moyen de transport genre cheval (feature très demandé par les joueurs que je n'ai pu coder faute de graphisme mal orienté et de recherches pour rééquilibrer l'intérêt du jeu, car il y avait des classes à fort potentiel pour le déplacement genre 'explorateur')

.ne pas avoir fait de coffres inviolable (feature très demandé, car tout joueur mort perd ses objets (sauf si il est de classe/race préservateur ou qu'il les a laissés dans sa maison, mais celle-ci peut potentiellement être cambriolé, puisqu'il perd ses clés au moment de sa mort, et la classe/race détrousseur peut ouvrir n'importe quelle porte))

.Avoir subdivisé les persos en classe/race. Dans la première version du jeu (principalement joué, la seconde n'a quasiment pas été joué), après avoir ramassé pleins de parchemins, l'ensemble des sorts étaient accessible à tous les persos, soit une bonne trentaine, ce qui laissait un nombre de possibilités grandioses. En subdivisant en 6 classes, 5 races, il ne reste plus que 7 sorts communs a tous et 2/3 sorts par combinaisons. J'ai voulu cette subdivision car il y avait trop de pvp, et je voulais rendre le jeu plus 'intelligent' en obligeant les joueurs a s'allier pour regrouper leur compétence, j'ai travaillé d'arrache pied pour rééquilibrer le jeu, car une potion (très rare) permettait de doubler ses capacités et un sort(parchemin très rare) permettait de dupliquer les objets, il s'est avéré qu'au bout de quelques mois plusieurs joueurs parvenaient au level 9999 (max des tables sql), tuant ainsi les nouveaux venus (la subdivision + rééquilibrage aurait évité ce phénomène)

.ne pas avoir fait de purge automatique des objets délaissés par terre !!! Smile
beaucoup de joueurs laissaient les objets utilisés par terre, car ils n'étaient plus d'aucune utilité,
a un moment le monde était une vrai porcherie, certains joueurs ont même fait des guildes ecolos pour régler le pb. Seul une purge auto a 48h a vraiment pu régler le pb.

.ne pas avoir défini un positionnement clair,
nainwak le positionnement est clair, c'est du 5 minutes par jour,
dans iuki, les unités de temps permettent de jouer plus longtemps, mais pas tant que ça non plus (15 minutes), du coup le joueur est obligé de s'investir un peu (plus le chat sur map, plus les guildes et le role play).
nainwak joue la carte de l'humour et du fun,
iuki pas trop, donc sérieux = le jeu doit déboiter techniquement, le web = juste une solution échappatoire pour éviter au jouer de télécharger un client lourd.
donc si pas de technique et pas drôle et que l'existant est meilleur (wow) = impossible d'avoir du monde.

.pas suffisamment d'aide non plus (y a un manuel écrit par ma copine de l'époque), j'en ai encore plus conscience à l'heure actuel quand je vois l'effort humain a fournir pour former des utilisateurs sur un projet web (compter raisonnablement 1 demi journée par formulaire codé, donc imaginer l'effort à fournir pour délivrer une aide correcte à tout nouvel arrivant dans une interface chiadé)


'si c'était à refaire ...' :

-vu le nombre de jeux existants aujourd'hui par rapport à l'époque, faudrait avoir une idée qui déboite vraiment !
.maintenant y a wow, donc en médiéval fantastique en mode web ...

donc si je limite l'énoncé à
jeu en php à faire aujourd'hui,
-trouver une thématique non exploité (stratégie spatiale = trop exploité, médiéval-fantastique = idem, élevages, trucs rigolos aussi) (je sais pas ce qui reste, j'ai pas encore lu le forum, j'espère y trouver quelque chose d'original)
-ne pas être trop ambitieux (je l'ai été pas mal avec iuki)
-avoir un positionnement super clair (le joueur doit avoir un intérêt très concret à jouer, genre plaisir, notoriété ou argent à gagner), cela sous entend avoir un moyen de promotion/marketing, un plan d'action très clair pour générer du trafic qualifié (voir mes vidéos seo (youtube kalaspace), à l'époque j'avais pas ces compétences la, d'ailleurs même avec, ça devient super difficile de faire quelque chose, le public cherchant un "jeu par navigateur" et n'étant pas des gens cherchant eux même a faire un jeu s'avère hyper limité)
-je complèterai en fonction de ce que je découvrirai ici car on peut pas vraiment dire que mes postulats ci dessus constituent des solutions.





Conclusion globale :
-Dans tous les cas faire un jeu est le meilleur moyen d'apprendre un langage de prog.
-Ce projet m'a servi de vitrine techno pour être embauché la ou je suis aujourd'hui.


RE: kala : concepteur de Iuki's Land - Mysterarts - 07-04-2008

Bienvenue !
Intéressantes tes vidéos !
Je mets un lien, parce qu'il y a pas mal de feignasse sur ce forum :
http://www.youtube.com/watch?v=PV4XOs9oG5E&feature=related
Mais faut avouer que ça doit faire peur à plus d'une personne :p

En ce qui concerne : http://www.iuki.com/
Je me suis fait un petit test, c'ets sympa... Mais un peu trop de refresh à mon gout Confused
Bonne continuation,

Mysterarts


RE: kala : concepteur de Iuki's Land - kala - 07-04-2008

micro détail pour le confort de jeu :
mieux vaut jouer avec FF qu'IE,
IE a tendances a faire des flash blancs lors des refresh (la couleur par défaut étant blanc avant l'arrivée des pages)
FF n'affiche rien tant que l'intégralité des la page n'a pas été chargé, donc pas de bling bling
(ces postulats datant un peu, faudrait quand même que je revérifie)


RE: kala : concepteur de Iuki's Land - Sephi-Chan - 07-04-2008

Bonjour et un gros bienvenu.

Les vidéos sont amusantes (certaines expressions, intonations) et je me souviens en avoir déjà vue une.

Le retour sur expérience intéressant. Sans te connaître, je suis content de te compter parmi nous, j'espère que tu pourras apporter à la communauté et que celle ci pourra t'apporter. Smile


Sephi-Chan