Benchmark for CatchChallenger cache

I have finish implement cache into HPS to reduce memory at server startup and startup time for server and client (usefull for phone or where the CPU is slow)

EDIT: How do the cache sync with datapack:

  • Scan at startup the datapack, create checksum, if checksum match the cache then load the cache. Problem: it’s slow mostly on slow disk and FS because need access to all inode, can greatly slow down the cache
  • Never check the datapack change, regen the cache manually. More performance, but not adapted to everyone. Need be intergrate where you update your datapack
CatchChallenger binary datapack size (datpack file cache * is not used if http mirror enabled), map can be stored into quadtree to improve the sapce used at exchange of more cache miss
The datapack load time is better, but can be improved even more
Memory is few bit better, but can be optimized

Why?

  • Load single file, not multiple, less pressure on file system
  • No decoding file format, it’s only unserialize
  • No decoding value from string to int
  • No endian change
  • Only used information is kept, no useless data is loaded

DDOS a 1Tbps!

Salut,

Je viens d’avancé sur les bots, ce qui m’as permit de lancé une attaque DDOS de 1Tbps sur mon cluster locale de odroid c2 (boucle locale: localhost), 5.2Gbps par odroid c2 par coeur. Ou 100 000 joueurs sur un rpi1 ou pentium 1/2 a 200Mhz. (Cela est approximatif et vas dépendre de comment jouent les joueurs)

Les serveurs fonctionnais sans ralentissement visible coté client (et avec les pires réglages). Ce qui est un nouveau records mondiale et confirme les chiffres suivant: 10 Millions de joueurs possible par serveur pour un serveur moyen.

CatchChallenger n’est pas encore optimisé a fonds, mais cela n’as pas d’importance. Il faut environs 10 000x plus de puissance offensive que défensive.

Quand on affronte 2 bots ou botnet vs Waf avec des IA, une qui cherche à défendre (essayant de trier vrai visiteur et bot) et l’autre à attaquer (essaye de simuler la charge visiteur mais avec les actions ralentissant le plus possible le temps de réponse générale du serveur, avec webkit), les 2 bots se mettent au niveau jusqu’as un point d’équilibre qui ne permet pas de distinguer un bot d’un visiteur et n’est pas différentiable d’un gros coup médiatique.

Bye

Load balancing et scalabilité avec CatchChallenger

Bonjour,

Je rentre dans une phase de testing, benchmarking et stabilisation dans CatchChallenger. Je n’est pas encore fait l’optimisation, juste respecter les régles de codage.

Les temps noyau, et gestion de matériel dans le cas du raspberry pi sont bien supérieur aux temps en espace utilisateur. Donc un load balancer prendrais autant de charge CPU que l’application en elle même. Le seul cas réel d’un load balancer serai un gros load balancer et de toute petite nodes. Mais dans tout les cas le load balancer ne pourra jamais gérer plus de client que les nodes elle même.

Pourquoi un load balancer?

Pour la haute disponibilité: Il suffit de faire soit un/des haproxy en mode tcp, ou faire cela via DNS (ce qui permet de faire des personnalisation par pays pour optimiser le trafic, et cela est parfaitement scalable)

Répartition de charge: impossible via un logiciel si les serveurs sont symétrique, car il passerai plus de temps cpu a répartir la charge que à travailler (induirai des latences et sous chargerai les serveurs). Pour les serveurs logins, la gestion par pays des DNS permet cela.

 

Et pour les games serveurs? Pour la haute disponibilité: Pas besoin, le serveur est down, les joueurs peuvent aller jouer sur un autre serveur similaire. Répartition de charge: Les limites par serveur force les joueurs a se répartir sur les différents serveurs, sans compter avec le faire qu’il vont sur les serveurs les plus proches de chez eux.

 

Un raspberry pi 1, ARMv6 à 700Mhz tiens une charge de 60000 joueurs. Ceux sans optimisation. Pour que une attaque DDOS soit intéressante il faut que le prix de l’attaque soit bien inférieur au prix du préjudice. Comme ici le botnet pour attaquer CatchChallenger doit être vraiment três grands face aux peu de serveur pour surporter un tel charge, la possibilité d’une attaque DDOS est relativement faible.

Attention: Les options du serveurs ont une forte influence sur la monté en charge et le confort des utilisateurs.

Map infini

Les maps infini sont théoriquement supporté (infini à la minecraft: trop grande humainement pour être explorer). La gestion et mise a l’échelle as été fortement amélioré. Il deviens donc envisageable de faire les maps par génération procédurale.

Raspberry pi 3

Je ne vous conseille pas le raspberry pi 3 car pour le même prix vous avez the le Odroid C2 qui vous offres: une bien meilleure carte graphique, une mémoire bien plus rapide, plus grande, un meilleur bus de communication entre les composants, une carte réseau meilleure et mieux interfacé (pas via l’usb), l’eMMC, …

 

N’hésité pas a acheter les logiciels qui vous ont plus ou apporté quelque chose (CatchChallenger).

Bye,

Logiciel payant, gratuit, demo

Bonjour,

Vous êtes déjà vous demandé comment gagner de l’argent avec un logiciel? Il y a le modéle google/facebook qui gange sur votre vie privée et les données que vous leur confiez.

Mais je parle d’application. Il y as une partie de l’application qui est gratuite, pour montrer/promotionner votre logiciel, et une partie pour le rentabiliser. Tout est dans le ratio de ces 2 parties. Une demo c’est en général 20% du logiciel complet. Le probléme c’est quand c’est pas clairement affiché, il arrive souvent que le contenu téléchargé (DLC) représente 80% du logiciel, donc logiciel fourni est une demo qu’on vous donne sans vous le dise.

Avec Ultracopier/Supercopier c’est 99% du logiciel qui est gratuit, et quand vous payer c’est 1% de plus (le titre), sans compter le support prioritaire, l’optimisation cpu. Pour CatchChallenger, je vais plutôt faire 80% gratuit. Et la version payante, c’est 20% de plus. Avec aussi support prioritaire, correction de bug plus rapide, plus de poids pour le choix dans les fonctionnalités. Et le tout étant en GPL3, même les versions payantes.

Mais comme tout logiciel communautaire et libre, je être à l’écoute de ma commuté pour que je gagne ma vie mais que la communauté à le logiciel qu’elle veut et qui lui plait.

La version CatchChallenger vas bien sortir en fin d’année, et la prochaine version incluant pas mal d’avancé prendra 2ans pour  être faite. Je posterai la roadmap quand elle sera fini et les temps sur chaque fonctions que j’ai estimé. La version 1 aura pris au total un peu plus de 3ans, 5Mo de code, 1500 commits, 5Mo de contenu. Et ceux sans aucun revenu. Les technologies sont très avancé malgré l’apparence assez veille du jeu.

J’ai ouvert les comptes nextcoin pour qu’il soit publique et visible pour les dons comme pour les revenus commercial d’argent. Cela je pense, réponds au droit de regards qu’as la communauté sur l’argent. Sachant que je bosse 120h par semaine et que je fait le travail d’une équipe de dev complète et pro.

Bye

Nextcoin market, i2p et CatchChallenger

Salut,

Je viens vous donner quelques nouvelles. J’ai mit en place un système de vente de software sur le nextcoin market. Le nextcoin market est un système de vente en ligne parfait pour l’ecommerce mais décentralisé et peu chére. J’y ai donc mit CatchChallenger, et j’y mettrai Ultracopier 2. Le tout via l’envoie de clef. J’ai aussi mit en ligne d’autre moyen de paiments.

CatchChallenger avance bien, il rentre en RC. Il marche super bien au travers d’une connexion lente et d’i2p. Il deviens de plus en plus stable et as une meilleure base chaque jour. Version 0.7 en ligne, version final pour la fin de l’année.

Le site CatchChallenger et Ultracopier à été réécrit rapidement en responsive design pour marcher sur téléphone et tablette.

Bye,

Fichier ogg et Qt

Bonjour,

Pour le support de l’audio dans catchchallenger, j’ai choisi de supporté qu’un format unique (le .ogg), avec le codec inclut dans le programme. Pour évité les merdes de codec absents, l’installeur du codec à mettre dans mon codec, embarquer un player lourd type vlc, …

1) J’ai du installé msys2 par dessus mingw, ensuite faut compilé libogg puis libvorbis (./configure –prefix=mingw, make, make install + copie à la main des .dll/.a/.exe fait), j’avais déjà Qt5 compilé avec ce mingw (webkit désactivé et supprimé, configure -nomake demos -nomake webkit -nomake examples -nomake tests -opensource -confirm-license -debug-and-release -no-dbus -no-rtti -no-qml-debug -no-cetest -no-angle -opengl desktop, make -j5)

2) J’ai du faire un wrapper Qt pour libvorbis pour lire facilement les fichiers audio via Qt mais sans QFile (trop long à codé). Le lui balance le chemin du fichier, puis je fait play/pause. Correcte pour une utilisation basic (ambiance, bruitage, …)

3) Passé mon projet en Qt5 pour pouvoir compilé libvorbis/libogg sur un env récent, puis passé libtiled en 0.9 git pour passé sur Qt5, puis catchchallenger sur Qt5 et la nouvelle libtiled.

Mon 1er essaie été pourri (ça planté au lancement à cause de libvorbis), 2éme essaie ça planté à la fermeture…. peu étre que sur mon 3éme essaie ça vas marché. En tout cas sous linux c’été super simple, j’ajoute ma lib dans qt, mon wrapper et fini.

Bye