----------------------------------------------------- FICHIER FIGE - LE CONTENU A ETE COPIE DANS LE FICHIER PARTAGé GRAVITYUNIT ET LE PROJET GRAVITY SERVER NE RIEN AJOUTER ICI DECOUPAGE DE L'ESPACE Chaque quadrant se découpe comme suit: 1 | 2 3 | 4 Il y a une série infinie de 1.2.3.4 préfixant toute position -> L'Univers est arbitrairement grand. Les chiffres précédent la position sont des séries de 1.2.3.4, ajustés pour que le dernier 4 arrive au niveau du Quadrant Normalisé. Filtre ...1.2.3.4.1.2.3.4.1.2.3.4.1.2.3.4.1.2.3.4.1.2.3.4.1.2.3.Q4Q.0.0.0.0 Position .....................................................................2.1.3.1.4.Q2Q.4.2.1.1 Position étendue est : ...1.2.3.4.1.2.3.4.1.2.3.4.1.2.3.4.1.2.3.4.1.2.2.1.3.1.4.Q2Q.4.2.1.1 Les positions précédant Q permettent des calculs de distance approximatifs (245.12 années lumiere par exemple) Le chiffre entre QQ désigne le Quadrant NORMALISE Unité au milimetre, donc ok pour rencontres dans l'espace Taille = 3.000 km = 3 milliards de mm (racine de la somme des carrés doit etre calculable par un int64) Commençant au milieu de l'int64 pour les débordements Un quadrant mesure 3 milliard de trucs dans un int64 le truc = 1 mm pour les quadrants normalisés le truc = 1 mm * 2 puissance la longueur du préfixe pour les Méta-Quadrants le truc = 1 mm / 2 puissance la longueur du suffixe pour les Sous-Quadrants Suffixes : voir plus tard Précision aussi grande que voulue l'augmentation de la précision de création des quadrants doit répondre à une necessite (technologies de miniaturisation) PROBLEMATIQUES Serveur Un Serveur Gère un ou plusieurs arbres, totalement ou partiellement Routage de proche en proche, style parcours d'arbre (quadtree), avec message a ip a chaque fois 1 on fait remonter jusqu'à la racine commune on fait redescendre jusqu'au destinataire quadrant destinataire renvoie le flow directement a ip source Chaque quadrant contient l'adresse (ip port) de son papa et de ses enfants Si la demande de flow concerne un Quadrant local, traite la demande Si Quadrant distant, envoie au serveur concerné Traitement identique, c'est juste que ip locale = 127.0.0.1 Mise au propre de la repartition de gestion des arbres. Déplacement de gros groupe de joueurs - > parcellisation Regroupement / réorganisation de la gestion des arbres Arbres purement de routage, sans gestion locale : utilise de la bande passante pour rien ? sauf meta-meta Quadrants ? Comment nettoyer Methode externe, genre Garbage Collector Interne : Le serveur essaie de s'autoanalyser et de résoudre. Repartition de charge Réseau Serveur surchargé envoie les données de position Serveur secondaire recoit les données de position et les transfere aux clients Répartition de charge Processeur Si Trop de charge sur un noeud Scission en 4 Sous quadrants Les sous quadrants estiment leur charge Un Processus par Quadrant Meta-Quadrant Le Méta-Quadrant est plus gros qu'un quadrant normalisé Il ne peut renvoyer que des informations à son echelle. Il route les demandes de Flow Il gere les adresses des quadrants qu'il contient Scan Scan <> Mapping Le Scanner Le scan est instantané Le Scanner etablit la liste des Quadrants à Scanner et la résolution correspondante Le Scanner choisit le niveau de meta-quadrant qui va répondre en fonction de la résolution voulue Le Scanner envoie les requetes de flow au quadrant scanné Le Quadrant scanné renvoie (Flow) les informations a son échelle / ordre de grandeur Résolution Max depend de la résolution d'ecran, nb de pixels affiches La résolution est modifié par La distance Le nombre de cibles (p.e nuages de grains de poussière) ou vaisseau dérivant dans un tas de debris asteroides Le temps passé a observer +1 par heure immobile, avec une évolution au carré du temps necessaire pour augmenter encore de 1 (la surface augmentant au carré) La focalisation de l'observation sur une zone précise +1 par 10 minutes à observer un endroit sans bouger, avec une résolution max selon la distance à la zone La résolution s'oppose à La taille de la cible La furtivité de la cible Donnees acquises du plus faible niveau d'information au plus précis Fond Diffus Cosmologique Luminosité moyenne atténuée (ramenée vers le Fond diffus cosmologique) Luminosité moyenne du Méta-Quadrant Etoiles a luminosité > gros seuil Toutes les Etoiles - Luminosité et frequence approximative Trous noirs Toutes les Etoiles - Luminosité, frequence, masse, composition Ceintures / nuages dans les systemes autour d'une etoile Planetes géantes Planetes taille normale Planetes naines - Gros astéroides - Gros Satellites Asteroides - Cometes - Gros Vaisseaux spatiaux Petits Astéroides - Vaisseaux spatiaux normaux Petits Vaisseaux spatiaux- - identification des systemes du vaisseau - missiles - projectiles Identification précise des missiles - projectiles Mapping - Generation de l'Univers C'est le serveur qui renvoie la carte sous la forme d'un bitmap taille Virtual Pixel (64 * 64 quelle que soit la résolution ecran) Un Virtual pixel est calculé une seule fois, grace a ses 64 descendants de second niveau, avec une super résolution , et est transmis atténué selon la résolution demandée. A noter que ca donne au max du 64*64 = 4000 pixels de second niveau, donc du 4K Chaque niveau tire ses caracteristique et les répartit sur les 4 niveaux inférieurs. Il transmet certaines caracs et la graine. Du plus haut niveau de génération, on genere une graine ( et des données intermediaires) pour chaque sous quadrant jusqu'au quadrant concerné. La graine et les parametres exigés d'un quadrant actif sont donnés a sa creation, et il les conserve pour ne pas avoir a les recalculer n fois Tableau ecran décomposé en 64*64 Virtual Pixels, affiche / clippe les coordonnées standard Que voit on apparaitre quand le Virtual Pixel atteint une certaine taille ? Taille Virtual Pixel < 26 Milliards AL - On crée l'Univers Taille Virtual Pixel < 500 Million AL - Taille Virtual Pixel < 10 Million AL - Taille Virtual Pixel < 200.000 AL - On créée une galaxie spirale (64*64, transmet la densité d'etoile a chaque Virtual Pixel) Densité : Dans la voie lactée : 10 etoiles par carré d'une année lumiere de coté en moyenne,a varier selon distance au centre Taille Virtual Pixel < 4000 AL - (16 Million d'etoiles) - Genere le nb et la densité locale Taille Virtual Pixel < 100 AL - (10.000 etoiles) - Taille Virtual Pixel < 1 AL (10 etoiles)- Genere les positions des étoiles, radiance, couleur + trous noirs Taille Virtual Pixel < 1 JL - On créée un Systeme solaire - Nuages, Ceintures, etoile centrale (Son aura de lumiere est plus grande que sa taille) Taille Virtual Pixel < 0.5 SL - On créée les planetes géantes - Donc toutes les planetes, et anneaux Taille Virtual Pixel < Selon taille des planetes , Generation de la surface planétaire echelle continentale Taille Virtual Pixel < 5200 km Lunes (ganymede --> Phoebe 200 km) Taille Virtual Pixel < 3000 km : Quadrant Normalisé QnQ - Asteroides (<200 km) si pas trop nombreux, voir Les civilisations Creation d'un Quadrant Lorsqu'un item entre dans un quadrant Normalisé, les 8 quadrants Normalisé autour doivent etre crées. Lorsqu'une demande de scan arrive sur un quadrant, il est créé. Si le quadrant destination n'existe pas Le fils qui n'a pas de papa, crée son papa a la volée Le papa qui n'a pas le fils demandé, créé le fils à la volée Suppression d'un quadrant Les quadrants inactifs sont sauvegardes et gelés (plus de combats pnj vs pnj automatique) Monde persistant Les actions des joueurs laissent des traces. La génération aleatoire peut etre poussée, et le lieu est sauvegardé. Par la suite, le lieu est Sauvegardé et Chargé au besoin. Faire intervenir des PNJ pour nettoyer les lieux (petits objets, débris spatiaux). Objectif : supprimer des objets pour prendre moins de place en mémoire. Décomposition d'un quadrant en 4 sous quadrants La décomposition en sous quadrants ne sert qu'a rééquilibrer La charge processeur La Charge Reseau Distance Unité Astronomique (UA) = 149 597 870 700 metres = distance moyenne terre soleil = 8 minutes lumiere Parsec = 648.000 / pi UA = 206.265 UA = 3.26 AL = 1 seconde d'arc a Année Lumière (AL) = 9 460 730 472 580 800 metres = 63 018 UA longueur de planck : 1,616255 * 10^-35 metre On garde : Année Lumière - Jour Lumière - Seconde Lumière - kilometres - metres , 3 décimales (millimetres) Précision variable selon valeur Exemples : X>1000 AL --> 4207 AL 999>X>10 AL --> 142,49 AL 9>X>1 AL --> 7 AL 182 JL 365>X> 100 JL --> 192 JL 99>X>20 JL --> 48.2 JL 19>X>10 JL --> 17.49 JL 9>X>1 JL --> 7 JL 43 217 SL 86 400 SL>X> 100 SL --> 43217 SL 99>X>20 SL --> 48.2 SL 19>X>10 SL --> 17.49 SL 9>X>1 SL --> 7 SL 193.000 KM 300 000 KM>X> 100 KM --> 122 412 KM 99>X>50 KM --> 48.2 KM 49>X>10 KM --> 17.49 KM 9>X>1 KM --> 7 KM 374 M 999>X> 100 M --> 409 M 99>X>20 M --> 48.2 M 19>X>10 M --> 17.49 M 9>X>1 M --> 7,741 M Quelle est la position d'un objet fCenterPosition est un Point (centre de l'objet), il est utilisé pour gerer tout ce qui ne se voit pas sur l'ecran Dans la réalité, c'est le masque qui détermine la "position" FPositionRect C'est une boite englobante alignée sur les axes. Width et Height calculés d'après l'orientation. Précalculer éventuellement les dimensions de la boite selon l'orientation (pixel perfect) FPositionRect est un Rectangle et une liste de Rectangles projetés chez les quadrants voisins. Le Vaisseau controle le mouvement de ses rectangles, meme dans les autre quadrants Les autres quadrants gerent la partie collision chez eux et renvoient les collisions a l'objet propriétaire . fScreenPosition : Rect calculé en fonction des vraies données. Ne doit pas être lue par autre chose que l'ecran pour l'affichage Collisions Plusieurs degres de recherche de collisions 1 : Par Quadrant : Seuls les elements d'un meme quadrant sont comparés pour collision. Si il y a trop d'objet, Le quadrant est scindé. 2 : Boite englobantes Intersection entre les 2 rectangles fPositionRect 3 : Pixel Perfect Création d'un Masque pour chaque objet, et pour chaque orientation, a la resolution voulue (% de la taille ?) à la creation de l'objet Test des collisions entre les masques Frontière entre 2 quadrants Collisions FpositionRect est copié intégralement sur les Quadrants frontière Chaque Quadrant doit gerer sa partie uniquement, ignorant la partie exterieure le masque est appliqué uniquement sur la partie gérée par le quadrant effets des collisions Degats recus Degats donnés (éperon) Passage complet de frontière Transfert de l'objet entre les 2 quadrants portails Transfert de l'objet entre les 2 quadrants visibilité interfrontieres C'est le scanner qui dit ce qu'on voit missile passe une frontière. Autodestruction declenchée par le lanceur. un missile a un controlleur (controlable par l'objet parent, eventellement avec ip distante) laser C'est un trait dans une direction avec une longueur S'il y a intersection avec un obstacle, l'obstacle prend les degats Le rayon laser n'est pas un Item. Comme c'est instantané, il n'y a pas besoin de faire des transfert d'objet du quadrant a un autre Il faut un gestionnaire d'intersection qui donne le premier objet qui intersecte (distance a la source ?) La gestion des obstacles est indispensable, ca rajoute une dimension géniale (gros vaisseau protege petit, fuite dans champs d'asteroides, etc..) laser rayon continu traverse plusieurs frontieres (portée > 3000 km) ou angle Les quadrants renvoient l'obstacle le plus proche de la source eventuellement touché Le plus proche de tous gagne frontieres multiples (angle) ca ne change rien, on copie le nb necessaire d'items beam Copie du beam Controlé par l'objet emetteur bombes Copie du Disque complet avec clipping Controlé par l'objet emetteur boucliers ce sont des cercles qui dépassent mines Son scanner decide ce qui est détecté asteroides polygonaux et minage Polygone coupé et controlant la partie déportée Gravitation Un Quadrant a un vecteur Gravitationnel calculé à la création, qui correspond à la somme des forces gravitationnelles Pour les quadrant très pres d'un corps très attractif, on peut mettre une fonction qui fait varier l'attraction en fonction de la distance TGravitationVector = class(TObject) fgravitationValue : real; fDirection : real; fIsAFunction : boolean; fGravitationFunction : function of PositionXY Radiation des étoiles Un Quadrant a un vecteur Radiation calculé à la création, qui correspond à la somme des radiations TRadiationField = class(TObject) fRadiationPower : real; fFromDirection : real; Orbites Dépend du temps général La position évolue avec le temps, ca c'est un must total Les planètes tournent aussi sur elles memes. L'orbite planétaire est stable PROGRAMMATION Il faut déporter toute la gestion des positions, distances, frontières dans une bibliothèque transparente. Il faudrait utiliser lgameUnit, que j'ai deja développée, pour ne pas avoir a réinventer la roue TIpPort : record ip : string; port : integer; end TAdresseQuadrant = class (TObject) private fPrefixe : TMyList(); // of bytes fQuadrantNormalisé : byte; fSuffixe : TMyList(); // of bytes private function ExtractPrefix(anAddress : string) : string; function ExtractSuffix(anAddress : string) : string; function ExtractQuadrantNormalise(anAddress : string) : byte; public function GetPrefixOrdre(ordre) : byte; // complete par le préfixe 1.2.3.4 si necessaire // renvoie des zeros a la fin si Meta-Quadrant function GetSuffixOrdre(ordre) : byte; // refuse les suffixes au dela du sufffixe max function GetQuadrantNormalise : byte; procedure SetPrefix (newPrefix : string);overload; procedure SetPrefix (ordre : integer; val : byte); overload; procedure SetSuffix (ordre : integer; val : byte); overload; procedure SetSuffix (newSuffix : string);overload; procedure SetAddress(anAddress : string); // format 4.1.3.Q2Q.1.4.2 function IsCorrectAddress(anAddress : string) : boolean function GetParentAddress() : string; function ToSring() : string; end; TQuadrantManager = class(TManager) // voir la classe Manager et ce qu'elle contient deja end TQuadrant = class(TObject) ClientCommunicator : TClientCommunicator; ServerCommunicator : TServerCommunicator AdresseQuadrant : TAdresseQuadrant; QuadrantParent : Pointer; // sur TQuadrant QuadrantFils1, QuadrantFils2, QuadrantFils3, QuadrantFils4 : Pointer; // sur TQuadrant SpatialObjects : TMyList; // of TSpatialObject public procedure SendMyNewIPPortToConnectedQuadrants () // définir le message procedure UpdateExternalQuadrantIPPort(oldIP, oldPort, newIP, newPort); // le changement de serveur n'arrete pas les flows procedure FlowScanResult (FromQuadrant : TIpPort; FlowId : integer; DestQuadrant : TPairOfInteger ; scanPower : integer; ZoneConcernée : TRectangle); if DestQuadrant <> 0,0 Transmission de la requete de Flow en direction de (0,0) si DestQuadrant = 0,0 Le flow est créé en local ou depuis les sous quadrants et envoyé vers FromQuadrant. Flowid Items : leur apparence, position, vitesse, orientation + les données dépendant du ScanPower ScanPower faible permet la detection des etoiles Unpeu plus : planetes plus encore,lunes, vaisseaux, etc. en fonction de la signature procedure StopFlowScanResult (FromQuadrant : TIpPort; FlowID : integer; DestQuadrantX, destQuadrantY : -1..1); //Demande de Flow d'information (asynchrone) demandé une fois, M.A.J. jusqu'à annulation ou MaxTime function GetBitmap(aResolution : integer) : TBitmap; end; TItemManager = class(TObject) procedure TextToItem(OneItemData : string); end TItem = class(TObject) // chaque objet est soit local, soit une réplique d'un objet d'un autre quadrant en cas de franchissement de frontière en cours // si local l'adresse est 127.0.0.1 et on ne passe pas par le réseau dans ce cas IpPort ; TIpPort ParentIpPort : TIpPort; Les fonctions necessitant une synchronisation UDP ManageCollisionCallback() // pour la majorité des degats TakeDamage() // pour les effets radiatifs ou de pression par exemple qui ne passent pas par une collision destructor Destroy() Serie de property qui verifient si il y a droit en ecriture (flag ou pas) et traitent ou envoient udp function ToText() : string ; // transforme l'item en texte, pour le transferer par le réseau end TSpatialObject = class(TItem) // TServer gere les messages concernant la répartition de charge TServer = class(TObject) QuadrantManager : TQuadrantManager function GetProcUsage() : 1..100; // % function GetNetworkUsage() : 1..100; // % procedure OnReceiveQuadrant(aQuadrantMetaData : string); procedure SendQuadrant(aQuadrant : TQuadrant; destServer : TIpPort) procedure OnReceive(aMsg); // exemples de messages 'GET_PROC_USAGE' 'MANAGE_QUADRANT;1.4.3.1.0.0.0' procedure LoadQuadrant(aQuadrantMetaData : string); end; ARCHITECTURE CLIENT Minimaliste, gere le minimum web (html5 +) javascript pixijs Adaptation a la taille de l'ecran Gros Ecran PC Systeme 9-9-9 Les Premiers sont les plus importants et les suivants apparaissent au fur et a mesure que l'ecran grandit Ecran Tactile, du Smartphone à la tablette Pouce gauche Deplacement Un cercle apparait et permet le mouvement. Le cercle a l'air d'apparaitre la ou le joueur appuie en moyenne bouger les doigts en dehors du cercle marche quand meme. Pouce droit. Premier cercle (dans l'angle) Action Principale (tirer) Second cercle 3 actions = Selection rapide qui change l'action principale Troisieme cercle 1 action le long du bord bas - Menu 1 action le long du bord droit - Menu au milieu, a 45 degres - 1 grosse action finale (warp...) Les icones des cercles sont parametrables par glisser deplacer Affichage zoomé selon les désirs du joueur, donc on ne fixe pas de valeur aux tailles D'abord, un client de TEST sur PC pour le developpement du SERVEUR, qui est le principal Minimiser ce qui est fait par le client (smartphone) l'affichage ecran le son l'interface joueur SERVEUR generation univers GENERAL / TOUS LES ASTRES gravite autour de.. masse composition champ electromagnetique temperature rayonnement planetes etoiles etat actuel prévision des dates de supernova, effondrement, etc... eruptions solaires atmas sauvages races alien champs d'asteroides ceintures de debris champs de debris trous noirs zones de saut interquadrant programmation du contenu sauvegarde joueur connaissances technologies connues pouvoirs atma matière vaisseaux territoires geographie carte des endroits explorés et degré de connaissance de chacun des objets fichiers de contenu (description de tout ce qui est figé, prédéfini dans le jeu) fichiers de technologie (un par techno) arbre des technologies + temps de recherche fichier de pouvoirs (un par pouvoir) arbre des pouvoirs protocole de transmission client/serveur cryptage compression gestion du temps VERSION MINIMALISTE publiable Un vaisseau dans l'espace Asteroides asteroides sans rotation, en translation aleatoire minage automatique de la ressource "matériaux", necessite d'etre a une certaine proximité un beam se cree le polygone diminue sa taille proportionnellement au volume miné Evolution avec des ressources, on peut upgrader le niveau de : moteur coque (épaisseur, solidité) scanner (portee de detection des asteroides) mineur (portée et vitesse de minage) Le bitmap du vaisseau grossit en fonction de sa puissance générale (somme de toutes les caractéristiques) Client / Serveur Les impacts diminuent la coque courante, réparer = augmenter la coque a coque = zero, explosion, jeu fini Il faut se faire attaquer, sinon c'est lourd et ininteressant. idées tirées de kerbal space program : exploration de planetes, lunes asteroides contruction de bases construction de gros vaisseaux en orbite usine de construction sur asteroide ou dans l'espace. Autonomie des colonies / bases génération de "carburant" mines de production sur asteroides L'interface présente les choix les plus adaptés selon les situations (PEU DE CHOIX, il ne faut pas perdre le joueur) Mais Il est toujours possible de faire un truc en fonction de ses coordonnées de pouvoir (systeme 9*9*9, donc un nombre de trois chiffres correspond toujours a la meme capacité) Game Designing Quel style de jeu ? (2d, 3d, inspiré d'un existant ou pas) ? Definir precisement le jeu, surtout ses limites. Choisir le NOM du jeu, sans nom, il ne peut pas naitre. Cible Ecran PC ? Ecran téléphone ? Quelle taille min / max ? Graphisme Déssiner un vaisseau, au moins un exemple de graphisme. Le style graphique influe sur le reste. interface A definir precisement. Faire un dessin des ecrans de jeu, raccourcis par defaut, clavier souris, touchpad. Faire une version de l'interface réelle finie. De toutes façons, le travail devra etre fait. Integrer les splash d'accueil, les menus, les pages de parametrage, les pages d'update, de connexion, etc.. Technologies Pas normal que j'entende parler de Quadtree maintenant putain !! Donc chercher les techs existantes pour faire ce que je veux. Delais Definir les sequences de boulot avec la duree de realisation Lorsque le dernier point a faire est fait, le jeu est FINI Marketing RAF Marketing, je fais ce qui ME fait plaisir. MOTEURS impulsion S'appuient sur le champ électromagnétique local. Peu efficace en Espace profond. Très utile à portée des tempêtes, étoiles, planètes avec champ, présence de fer importante. Pas de carburant nécessaire, utile pour les vaisseaux restant en orbite Ionique Projette un nuage d'ions en arrière. Couteux en matière à vaporiser. Technologie simple, peu chère. Le plus répandu Possibilité de grosses puissances. Trou de ver stabilisé Aucune dépense d'Energie ni de matière, le moins couteux en fonctionnement. faible puissance / vendus aux enchères les trous de ver se récupèrent autour des trous noirs par les atmas. detruit le trou noir Plusieurs atmas peuvent s'unir pour detruire un trou noir et recuperer chacune un/plusieurs tvs selon la masse du trou noir, il faut plein d'atmas à particules Accélère des particules grâce à de l'Energie, gros besoins en énergie. Peu de limites de puissance. Dépense de matière fonction du % par rapport à la puissance max. Tous les moteurs de ce type à fond lâchent la même qté de matière, seule la vitesse d'éjection change. neutralisation de masse forme d'anti gravité limitée diminuant la masse d'un vaisseau de son indice. Saut Quantique Teleport plus loin instantanément. Plus rapide que la lumière puisque instantané. Temps de base du calcul comme si le déplacement était fait à la vitesse de la lumière. Ce temps est divisé par : - L'indice de la technologie de saut quantique - L'indice de précision grâce aux calculateurs. Plus on calcule, meilleur est le temps Les sauts se calculent depuis une position précise vers une position précise à un temps donné (à +- 1 heure près (ou selon)). La précision de distance et de temps exigés dépendent de l'indice du moteur de saut. les sauts laissent des traces, on peut savoir ou a sauté qqun pendant son diviseur de temps * 1 sec / min ? a partir du point de depart du saut voile photonique se fait pousser par la lumière CONCEPTION DE VAISSEAUX Dessins préexistants / choix de la forme dans la base de photos Volume, Poids, coût, etc fonction de l'équipement gréffé Choix de la taille de 1 micromètre à 1 seconde lumière , couleur bordure Vaisseaux dans l'espace étendables, quoique.. doit pouvoir avoir l'acceleration et la structure necessaire pour s'echapper du champ de gravite de la zone de construction solidité structure / acceleration trop forte peut disloquer Description du vaisseau par arbre de caracteristiques, avec degres de profondeur dans la coque pour les elements, ce qui indique quels sont les degres de vulnérabilité des differents elements. Une demande forte pour la possibilité de se ballader à l'interieur de son vaisseau. Ca peut etre géré tout seul ou les elements du vaisseau peuvent etre mis à la main par le joueur Placer des pieces, il faut laisser de l'espace pour les couloirs. Une piece ne peut pas se trouver totalement isolée. Il faut au moins un couloir en contact avec chaque piece définir un rectangle rentrant a peu pres dans la taille du vaisseau, m*n cases. Chaque piece prend une certaine zone p*q Piece de réparation : c'est de la que partent les réparateurs, donc calculer le délai avant le début de la répéaration des parties du vaisseau en fonction de la distance a la plus proche zone de réparation disponible. CHAMP TACTIQUE Scanning pour la zone visible, possibilité de scanner un endroit particulier en profondeur furtivite / brouillage tour par tour limité dans le temps (fonction de la taille et du nombre des unités engagées) rapidité de tour mode auto combat Donne ordre à chacune des unités ou par groupe Déplacement vers point avec barre |---------------------| ralentir accélérer vitesse indiquée + nb de G subis déploiement armes hors coque avant utilisation --> arme non protégée par coque des que sortie TECHNOLOGIES furtivité scanner brouillage générateur de champ glu : (vide lentement de toute énergie) Generateur de champ d'inertie : absorbe l'energie cinétique des vaisseaux (les ralentit) hologramme simulateur de signature radar clonage (copie aussi les compétences) zones d'entrainement des formes biologiques / selection du plus fort ARMES laser plasma arc contact et projeté eperon antimatiere ionique vibratoire rail gun micro ondes bombe matière/Antimatière fusion atomique missile est un type de vaisseau accelerateur de particules balles standard tous calibres canon emp explosion EMP effet EMP des explosions normales mines spatiales Les dégâts des armes peuvent être totalement absorbées par les protections des vaisseaux. (favorise les gros vaisseaux .. ? ) trous noirs ia modification du flux du temps nanotech reves psy quanta cyber transformation de matière miniaturisation cryogénie recherche production entrainement competences soldats boucliers armure vaisseau illimitée (depends juste de l'épaisseur, donc de la masse) biotech système de combat système coordonnées galactiques / contenu galactique train de bombes (puiss reduite, mais frappent toutes au meme endroit) ATMA 1 atma par compte capacités atma : déplacement instantané saut quadrants (inoccupés) exploration (détermination des ressources) Création de vie -> génère forme de vie terraformation (rassemblement de nuages / création de systèmes / lunes / étoiles / asteroides) immunité : rend immunisé contre tout les planetes / vaisseaux de l'atma dans le quadran, met du temps a etre mis en place et a etre enlevé : permet aux joueurs pacifiques de se developper tranquillos ??? neutralisation : annule les pouvoirs d'une autre atma tant que c'est maintenu. Un équilibrage des puissances a lieu pendant la neutralisation. Le faible devient plus fort. Le fort devient plus faible. focalisation sur une autre atma (haine farouche). Gagne 1 niveau / h (minute, jour .. ?) contre une atma en particulier jusqu'à doubler le lvl au max, sans dépasser le niveau de l'atma cible. Tau (courbe espace) A associer avec un autre système de poussée. Multiplie la distance parcourue par l'indice. Si le Tau est arrêté, la vitesse redevient normale instantanément. Pas d'effet d'accélération, parcours juste I * plus d'espace. Arret du temps : tout s'arrete sur tous les territoires de l'atma pendant 10 minutes. Utilisation limitée, genre 1 fois par jour, etc... EndGame : Toutes les armées sur le territoire sont détruites. L'atma qui utilise EndGame est considérée comme perdante. toute la matiere restante de l'utilisateur d'EndGame est détruite. jusqu'à 10 fois cette quantité de matiere ennemie est détruite aussi, en commencant par les trucs petits. la qté de destruction restante correspond a une annihilation d'une partie des gros vaisseaux restant. EndGame ne peut etre utilisé qu'en défense. Récupération de trous de ver (autour d'un trou noir massif) Interdiction : Pas de saut EPR depuis et vers le territoire de l'atma strategie : augmente le temps de reflexion entre chaque tour L'atma peut a un certain stade évoluer vers demi-dieu (puissance fixe a seuil), puis divinité mineure (acquisition puissance ET test final ultradur et hasardeux (conquete zone publique disputée, réussir les 8 épreuves, échec ramene à petit demi-dieu de base) la puissance perdue est comptabilisée, elle pourra etre récupérée au stade dieu majeur puis divinité majeure(nombre limité, il faut prendre la place d'une majeure). pouvoir impregnation permanente. puis entité si on a réussi à rester longtemps majeur et apres avoir percé certaines disciplines et en le voulant. l'entité est désincorporée, elle peut s'autodétruire en créant un nouveau quadrant. elle a une semaine pour choisir le lieu de recréation 1 Quadrant 126 planètes (noyau stable) avec chacune 8 lunes + la ceinture (asteroides) Les quadrants peuvent communiquer, c'est juste que c'est loin ? Seule la taille des lunes/planetes/asteroides décide de combien d'atmas peuvent s'y établir. Plus le volume occupé est grand , plus l'imprégnation prend de temps. Niveau Atma + Champ d'imprégnation Amélioration : si l'atma s'intéresse à quelque chose, cette chose accroit ses possibilités énormément. Répartition de 10.000% d'amélioration dans les caracteristiques selectionnées (vaisseau bcp plus rapide, résistant, gros dégats, etc...) Max par carac : 1000% (*10) --> boucliers 10 fois plus puissants, ou régénerants,etc... vitesse *10, arme plus puissante, résistante, furtivité *10.... etc.... Donc vaisseau totalement investi : 10 éléments du vaisseau à *10 Les unites non investies sont carrément faiblardes par rapport a celles investies de la présence de l'atma. Les unités non investies sont un peu de la merde, mais c'est ce qui fait que les nolifes s'excitent a contruire une armée hors de proportion, sauf qu'ils se font casser le cul en quelques heures par une atma déterminée qui s'en occupe à fond (avec quelques moyens). favorise les gros vaisseaux Tour par tour de durée variable, dirigé par événements. Joueurs peuvent faire pause pendant un certain temps décroissant avec des limites serrées. Défenseur peut pauser un peu plus longtemps (pour s'adapter) . ... a travailler .. : Unions : Des joueurs peuvent déclarer une ou plusieurs unions (avec l'accord de n% des membres de l'union) unions temporaires (echanges commerciaux), longue durée (accord de non agression), avec atma de jeu (zone de départ pour protéger les noobs). (envoie des messages d'amour a la babacool cosmique aux joueurs) A la création de l'union, décision de tous les membres fondateurs du % du quorum d'émission/rejet d'un membre ainsi que d'autres caracs. Decider d'attaquer un membre de l'union est possible. Les autres doivent alors décider qui des 2 belligérants (attaquant ou attaqué) doit quitter l'union (ou pas de decision si le quorum ne veut pas décider) PRINCIPES DE JEU Un territoire peut devenir un vaisseau (composé de masse inerte) ARBRES Atma Caracteristiques Pouvoirs Connaissances Combats Territoires ChezMoi1 Système : proxima Planete : Galilea (44 eme orbite) Coords surface : 14° 124' 54'' Rayon : 412 km ChezMoi2 Système : Althéa Planete : asteroide 692 (grande ceinture) Coords surface : 1° 1' 1'' Rayon : 1242 km (totalité) Vaisseaux Galactica Système : s93 Position : 142,154,1247 Destination courante : s93 142,154,1247 Vitesse : 0 Coque : 78/80 (en réparation) (enleve degats) Armure : 914681/920000 (en réparation) Structure : 780.000/780.000 furtivité de base : -1200 furtivité courante : -16.200 Boucliers : Anti Energie 1 Etat courant : 450.000/450.000 Taux recharge : 11.240 Coût de base activation : 10.000 (dépense pour être actif) Coût énergétique / unité de recharge : 0.91 Rayon efficace : 800 m Degré de profondeur dans porteur : 100% (au coeur du vaisseau, explose en dernier) Coque : 45/45 Armure : 2000/2000 Structure : 120/120 (electronique fragile) Anti Matière : 450.000/450.000 Biologique : 1200/1200 Production Entrainement Recherche temps de concentration de l'atma pour (re)découvrir une technologie est divisé par le nombre d'atmas possédant cette technologie (si >1), ce qui permet a un nouveau joueur de se mettre rapidement au niveau technologique des autres. Seuils : il existe des seuils ou il faut repenser la technologie pour pouvoir continuer a l'augmenter. Les temps de recherche sont localement plus grands au niveau de ces seuils. Avoir combattu un ennemi utilisant une technologie au dela d'un seuil normalise le passage de ce seuil pour celui qui ne possede pas encore la techno on peux enseigner une technologie a une autre atma L'ensemble des atmas "poussant" une connaissance pour la decouvrir facilite l'obtention de cette connaissance de la noosphère. il y a plusieurs voies technologiques pour le même resultat. x peux connaitre le niveau dans une techno d'y si y-x <= ...5 ?? sinon difficile d'estimer en ayant aucune connaissance du domaine. Cartes _____________________________________________________________________________________________________________________ définir règles du jeu contenu connaissance recherche pouvoirs territoires = rayon autour de la matière matière objets construction ? energie radiations electricite autres formes principes de fonctionnement philosophie et regles adaptées intelligence prevaut (situations instables style magic) multiplicité des possibilites techno pas de limite de niveau des recherches (exageration possible) plein effet de surprise (temps de reflexion existe mais est limité) l'individu contre la masse des abrutis combats un contre un combattre a n contre 1, c'est reconnaitre a celui qui est seul qu'il est supérieur et donc ca crée un transfert de puissance depuis les n vers le 1 tant que dure le combat les possessions comptent peu (reconstruction facile) clonage + copies psychique : permet de mettre a l'abri des formes bio evoluées production accelerée par atma recherche acquise, et pas à refaire même après destruction totale on peux focus sur un ennemi (mais en étant intelligent) création des armes/vaisseaux en fonction de l'objectif est possible aucun interet au multi-compte niveau de puissance des atmas illimité aucun gain quand attaqué par plus faible attaques possibles seulement sur plus gros ou égal a soi éviter grosses frustrations / haine perdant détruit possessions ennemies (pouvoir EndGame) points fair-play ? attaques possibles seulement sur plus gros ou égal a soi Base de strategie /tactique grand nombre de possibilités - explosion combinatoire empechant systemes automatiques Gestion du temps a decider : Temps reel: nombreux arrets préprogrammés, durée fonction du niveau en strategie du defenseur ajout/retrait de 20% des forces en présence au precedent arret pause sur decision du joueur, nombre de secondes d'arret possibles augmentant avec le temps, genre 1 seconde toutes les 10 s, declenchement possible des que > 5 secondes Tour par tour (page web) définir interface graphique Les ecrans client les ecrans serveur (maintenance) Estimer temps de realisation réévaluer en fonction du temps estimé de réalisation / faisabilité plan de developpement client de test serveur ecrire les algorithmes complexes ecrire les algorithmes simples ANCIEN FICHIER JEU.TXT ----------------------------------------------- jeu de role ----------------------------------------------- graphismes pourris battle massive 800 personnes -securite, raf de la securité vendre contre fric la déco / aucun avantage reel / par contre multicompte apporte avantages Grosse base de graphismes --> bcp de type de monstre max de sorts / attaques creation d'objets a charge max de classes multi classes a volonté (systeme de competences toutes accessibles si t'as le don) generation automatique de scenarii (IA) gestion de la rumeur instances zones publiques pets en quantité hotel des ventes / mise en vente gratis / récuperation pourcentage en cas de vente réussie mouvements pnjs, transmission de rumeur, vie a la sims, metier, opinions Chateaux forts destructibles / constructibles possibilite de construire / acheter sa propre maison / place forte Generation Univers par random graine determinée avec volumes, montagnes, villes, seigneurs personnalités de gens, y compris seigneurs Champs de bataille / strategies / diriger des troupes de paysans / pnjs qui ont une individualite machines de guerre trebuchets etc artisanat l'individu prime sur le groupe ----------------------------------------------- atma (perdu) ----------------------------------------------- atma est une sorte de dieu. On peut perdre tous ses vaisseaux / planetes / constructions l'atma gagne en competence plus facilement jusqu'au niveau median de l'univers Il y a transfert de puissance entre 2 combattants de niveau trop différents pendant la durée du combat (genre pour éviter le farm des noobs) Le transfert dépend de qui attaque en premier (pour eviter les noob qui tapent les gros) Le gagnant recupere ce que possede le perdant en matos (abimé certes) Objets en Orbite Une fois l'orbite stabilisée, on met des alertes : quand on aura plus de fuel pour se maintenir en orbite, etc.. Les cases peuvent etre activées par un evenement sur le vaisseau en orbite, par un evenement sur la planete voire par un asteroide qui passe par la. Evenements : Plus de fuel, stock d'usine plein, mine vide, production finie Asteroide : s'il evolue seul dans l'espace, il est en mode automatique, il se reactive a chaque changement de secteur pour mettre a jour sa position (et le secteur par la meme occasion) Detecteurs en mode sommeil : activent leur secteur si un espace dans leur zone de detection s'active. Donc exemple : Tout dort, evenement asteroide entre dans secteur lointain de planete X, secteur s'active, pas d'interaction avec secteur, mais dans la portee des scans, donc secteur planete s'active pour gerer action detecteur. Detecteur active tous les autres secteurs de detection, qui a priori ne devraient rien avoir a signaler puisqueil n'y a pas d 'evenement, mais ils mettent quand meme a jour leur position . status et recreent leurs prochains evenements. Scanner decide envoyer vaisseau de minage, vaisseau de minage go et destination le secteur de l'asteroide. Evenement : a chaque changemenbt de secteur, se reveiller pour signaler son nouveau secteur gestionnaire. Si un evenement est a moins de 5 minutes, ca peut jouer le truc en temps reel peut etre ? NON cva prend trop de temps. Mais : qu'en est il des chefs ? ceux qui ordonnent au vaisseau d'aller là ? Leur secteur est activé à chaque decision prise par le vaisseau, et s'ils ne sont pas d'accord, ils changent les ordres. ? Comment programmer le grand chef ? Hierarchie ? Grand strategos ? Répartir les responsabilites entre les differents niveaux de hierarchie ? De Haut en bas : Tuez Les / Déployez la compgnie 4 et 7 !! / (Compagnie 4) Allons la bas vers l'ennemi - Stra*tegie d'entourement / (sous groupe 4) Par la gauche bravo 3 et 4 en attaque , bravo 6 en protection / (Bravo 3) Esquive, utilise torpille a photon / (Torpille) Go cible droite, droite gauche explose gestion des items (IA, effets en cours dans un vaisseau spatial, choix de cible d'un systeme de tir automatique, etc..) peut etre regroupée en gestionnaires d'items, qui se scindent ou se regroupent selon les besoins. ----------------------------------------------------- DEBUT 14 h 30 interruption avant : maman interruption violente et longue et laure aussi interruption 14 h 31 : maman demande addresse diakite interruption 14 h 34 : maman telephone diakite putain de merde, j'avais mis le ticket de volonte pour m'y remettre de suite interruption 14 h 44 : Zakya pour la mise en page impression interruption 14 h 54 - 15 h 05 : la théiere tombe et trempe tout interruption 15 h 05 - 15 h 09 : appel de fella STOP - GROSSE PAUSE Reprise : 15 h 56 , puisque plus aucune interruption depuis que je branle interruption 15 h 58 - 16 h 06 - papa lire la lettre à la banque et la corriger... sans deconner ? Ils sont télépathes aujourdhui 17/03/2021 , je remets ca a demain