Tout d'abord, merci pour ta contribution et les encouragements
J'ai effectivement déjà eu une première réflexion pour l'aspect 'sécurité'.construire correctement sa sandbox pour que la couverture des fonctionnalités soit bien définies n'est pas trés simple. On a vite fais d'oublier un petit trou laissant la main mise sur toute l'application.
Après quelques recherches, j'ai lu une partie de ce post qui parle justement de la possibilité de n'autoriser l'accès qu'à certains packages & certaines classes Java (cf. ClassShutter).
Après, je ne sais pas si -in fine- le ClassShutter ainsi qu'ne exécution du serveur avec des droits limités (genre un nobody/nobody sous linux) seront suffisants.
Il y a également le problème de répartition des ressources: Il me faudra pouvoir détecter et interrompre en runtime un script qui prendrait trop de ressources (charge processeur, mémoire). En effet, sans gestion des ressources, il suffirait d'un petit malin qui pond un script 'pourri' pour faire tomber un serveur complet, hébergeant plusieurs mondes.
Si vous avez de l'info là-dessus, n'hésitez pas à partager
J'entends également beaucoup parler de LUA.LUA est très apprécié [...]il s'agit apparemment d'un très bon langage de script.
Effectivement, c'est un candidat sérieux. Il n'a pas ma préférence pour le moment pour une raison totalement personnelle: je ne connais pas sa syntaxe, et j'ai pas envie de prendre le temps de l'apprendre.
Ceci dit, j'ai l'impression que mon choix se fera surtout en fonction des performances de chacun d'entre eux: le nerf de la guerre dans ce projet reste tout de même la charge serveur, et à priori 90% de la charge sera causée par l'exécution des scripts.
Il me semble donc primordial à ce stade de trouver de bons articles pour comparer les performances de chaque moteur de script pour voir où je vais.
Donc si vous avez des liens vers des bons articles, n'hésitez pas
C'est exactement mon idée: la charge de travail que ça induit est généralement largement sous-estimée par les développeurs.Ne pas implémenter une version UDP est une bonne chose également.
Mettre en place un protcole UDP "semi-fiable" est un vrai calvère [...]
Je pense que ce sera globalement le cas: si tu te réfères à mes schéma d'architecture générale du moteur réseau (second post du topic), l'API réseau ne sera vue que que par les action plugins et les events plugins. Ajouter des plugins supplémentaires pour l'UDP ne sera pas bien dur.Le mieux que vous puissiez faire est de construire la couche réseau de façon à être inter-changeable tout en implémentant qu'une version qui sera TCP.
Ceci dit, ce n'est vraiment pas l'orientation que je souhaite donner à ce projet. Pour moi son fondement est l'aspect 'smart user experience':
1- "je construis un monde en ligne en dessinant un terrain, en posant deux objets et en codant trois scripts"
2- "je distribue l'URL de ce monde"
3- "les visiteurs n'ont qu'à copier l'URL dans leur navigateur et ça démarre tout seul, tout de suite sans rien à installer ou configurer".
Mon choix de ne pas utiliser d'UDP est surtout pour respecter le paradigme ci-dessus, plus encore que pour des raisons de charge de travail (même si ça va dans le même sens).
Après ... il ne faut jamais dire jamais ...
Partager