faire défiler le temps hors jeu sans connexion internet ?
faire défiler le temps hors jeu sans connexion internet ?
Bonjour,
Voila là question n'est pas spécialement claire dans le titre je vais l'expliquer plus en détail :
Est il possible de réussir a faire défiler le temps en fonction du monde réel sans connexion internet ? et SURTOUT en étant déconnecter du jeu donc avec le pc éteint?
J'aimerais crée certain script en coroutine pour l'IA avec cette notion ( donc par exemple s'il est XX heures ce personnage fait "ca") ainsi que des améliorations sur le joueurs ( pour un RPG) sur une base de plusieurs jours.
Et si une connexion internet est obligatoire pour ce genre de script certain connaîtrait des tuto pour établir cette connexion ainsi que de gérer donc la notion de temps qui soit égal avec notre fuseaux horaire ?
Merci par avance!!
Voila là question n'est pas spécialement claire dans le titre je vais l'expliquer plus en détail :
Est il possible de réussir a faire défiler le temps en fonction du monde réel sans connexion internet ? et SURTOUT en étant déconnecter du jeu donc avec le pc éteint?
J'aimerais crée certain script en coroutine pour l'IA avec cette notion ( donc par exemple s'il est XX heures ce personnage fait "ca") ainsi que des améliorations sur le joueurs ( pour un RPG) sur une base de plusieurs jours.
Et si une connexion internet est obligatoire pour ce genre de script certain connaîtrait des tuto pour établir cette connexion ainsi que de gérer donc la notion de temps qui soit égal avec notre fuseaux horaire ?
Merci par avance!!
Re: faire défiler le temps hors jeu sans connexion internet
Salut,aryal a écrit : Est il possible de réussir a faire défiler le temps en fonction du monde réel sans connexion internet ? et SURTOUT en étant déconnecter du jeu donc avec le pc éteint?
Tu veux parler de calculer le temps écouler entre deux sessions de jeu ? Comme pour l'utilisation sur un cycle jour/nuit afin de garder une certaine logique ?
Tu peux utiliser le timestamp. Tu enregistre celui de la dernière connexion (lancement du jeu/de la partie) et le timestamp où le joueur relance sa session. Après je te laisse voir pour le calcul qui est très simple et la transposition.
Au cas où tu n'es pas familier avec ce dernier tu peux lire cette page sur WP : Timestamp
Si ce n'est pas ce que tu cherchais, pourrais-tu être plus précis dans ce cas là.
Edit : Sur la page Wikipidia les exemple sont en PhP mais existe aussi en C#. Donc tu peux regarder du côté de msdn pour plus d'informations.
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !
Re: faire défiler le temps hors jeu sans connexion internet
c'est quoi ca ? ^^LudlowFx a écrit : Donc tu peux regarder du côté de msdn pour plus d'informations.
je pense que dans l'idee c'est ca , mais si possible qui continue a tourner même lorsque l'on est en jeu, je vais prendre des exemples simple de jeu connue pour voir si l'idee de base est la bonne :
la construction des batiment / vaisseau / recherche sur Ogame, que tu sois en jeu ou que tu es couper internet le temps continue a defiler.
Les talent dans EveOnline qui sont appris en plusieurs jours , que tu sois connecter ou pas au jeux.
je pense que ca reviens au même que ton exemple avec les cycles jours nuit mais bon donner des exemples ne fait pas de mal ^^
j'ai fais quelques recherche sur youtube / google , je ne trouve pas de reference pour le timeStamp en C# :s
Edit : j'ai trouver quelques petit truc interessant, mais ils parlent tout de mise en reseau, est-ce vraiment necessaire ou on peux reussir sans internet ?
Re: faire défiler le temps hors jeu sans connexion internet
Msdn = http://msdn.microsoft.com/en-us/library/ms123401.aspx
Est un complément plus qu'utile dans la programmation. Pour comprendre une architecture, une classe et ses interactions, le fonctionnement d'une librairies etc... Lorsque tu recherche une solution à un problème de script ou de compréhension en C# sur Google, les liens msdn sont très récurrents.
Ogame, connait pas et EveOnline jamais joué pas intéressant. Mais bon je vois en gros ce que tu veux dire.
C'est bien là que je pense que l'utilisation du Timestamp serait utile, après il existe peut être d'autre solutions. Imaginons le principe d'EveOnline que tu présente, je formule à ma façon ne connaissant pas le jeu.
Par exemple, le Timestamp "1001207823" équivaut au 23/9/2001 à 3:17:03 Le timestamp (unix) désigne le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit UTC précise.
Après c'est à toi d'établir un plan avec ce principe, pour qu'il soit adapté à ton jeu. Mais avant d'essayer de l'intégrer à même ton jeu tu devrais essayer des choses basiques comme. Enregistrer le timestamp (playerprefs par exemple pour l'essai) qui le jeu, revenir quelques minutes plus tard et comparé le timestamp actuel et le comparer à l'ancien. De là affiche dans la console le temps en secondes/minutes ou heures qu'il se sera passé depuis ta dernière session.
Nya, c'est la théorie après en fouillant un peut sur msdn, google et stackoverflow (beaucoup d'exemple à ce sujet) tu comprendra vite. Et j'ai regardé par curiosité. En 15 secondes j'ai trouvé sur Google donc il va falloir chercher plus
Pour le côté réseau, ce n'est vraiment pas la branche dans laquelle j'excelle n'en ayant jamais vraiment fait sur U3D, donc si quelqu'un à une idée il te répondra à ma place.
Est un complément plus qu'utile dans la programmation. Pour comprendre une architecture, une classe et ses interactions, le fonctionnement d'une librairies etc... Lorsque tu recherche une solution à un problème de script ou de compréhension en C# sur Google, les liens msdn sont très récurrents.
Ogame, connait pas et EveOnline jamais joué pas intéressant. Mais bon je vois en gros ce que tu veux dire.
C'est bien là que je pense que l'utilisation du Timestamp serait utile, après il existe peut être d'autre solutions. Imaginons le principe d'EveOnline que tu présente, je formule à ma façon ne connaissant pas le jeu.
En pratique c'est bien entendu un peu plus compliqué car il y a plein de paramètres à prendre en compte selon le jeu donc nous ne pouvons pas te donner de recettes qui sera adapté à ton jeu précisément.Le lundi à 10h tu apprends un sort qui s'appel "MangePatateInfernal" et il lui faut disons 6h pour se compléter et passer du niveau 1 au niveau 2.
Donc tu l'apprends et te déconnecte, là tu enregistre le Timestamp.
Disons que tu revienne à 15h30, tu récupère le Timestamp actuel et tu le compare à l'ancien pour en calculer le temps où le joueur aura été absent. Dans notre cas il aura été absent pendant 5h30. Donc le temps restant est de 30 minutes avant que la compétence passe au niveau 2.
Par exemple, le Timestamp "1001207823" équivaut au 23/9/2001 à 3:17:03 Le timestamp (unix) désigne le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit UTC précise.
Après c'est à toi d'établir un plan avec ce principe, pour qu'il soit adapté à ton jeu. Mais avant d'essayer de l'intégrer à même ton jeu tu devrais essayer des choses basiques comme. Enregistrer le timestamp (playerprefs par exemple pour l'essai) qui le jeu, revenir quelques minutes plus tard et comparé le timestamp actuel et le comparer à l'ancien. De là affiche dans la console le temps en secondes/minutes ou heures qu'il se sera passé depuis ta dernière session.
Nya, c'est la théorie après en fouillant un peut sur msdn, google et stackoverflow (beaucoup d'exemple à ce sujet) tu comprendra vite. Et j'ai regardé par curiosité. En 15 secondes j'ai trouvé sur Google donc il va falloir chercher plus
Pour le côté réseau, ce n'est vraiment pas la branche dans laquelle j'excelle n'en ayant jamais vraiment fait sur U3D, donc si quelqu'un à une idée il te répondra à ma place.
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !
Re: faire défiler le temps hors jeu sans connexion internet
Hello,
Je pense que, si tu fonctionnes que sur un système local (sans internet), tu auras tjs le problème de la personne qui va changer la date de son mobile/ordinateur.
Mais l'idée est comme l'a dit LudlowFX:
-Stocker le timestamp de l'action.
-Tant que le jeu est allumé, tu lies ton compteur avec le temps de jeu qui passe.
-Si le jeu vient de démarrer, tu compares l'heure actuelle avec le timestamp, et ensuite ( comme au dessus), tu fais découler le temps avec le temps du jeu.
C'est le même système avec Ogame ou les jeux comme "Clash of clan" ou tous les autres du type. Sauf que quand tu fais une action, le timestamp est enregistré côté serveur. Le jeu ensuite fait vivre le timer de son côté et fait la synchro/vérification quand nécessaire.
Ex : Si tu triches en changeant la date de ton mobile. Eventuellement tu verras que ton upgrade est terminée, mais au moment ou tu feras une action, le jeu va appeler le serveur, et le serveur répondra qu'il y a un problème car , l'upgrade est toujours en cours => resynchronisation du timer.
Voilà en gros le système
Bon courage
Je pense que, si tu fonctionnes que sur un système local (sans internet), tu auras tjs le problème de la personne qui va changer la date de son mobile/ordinateur.
Mais l'idée est comme l'a dit LudlowFX:
-Stocker le timestamp de l'action.
-Tant que le jeu est allumé, tu lies ton compteur avec le temps de jeu qui passe.
-Si le jeu vient de démarrer, tu compares l'heure actuelle avec le timestamp, et ensuite ( comme au dessus), tu fais découler le temps avec le temps du jeu.
C'est le même système avec Ogame ou les jeux comme "Clash of clan" ou tous les autres du type. Sauf que quand tu fais une action, le timestamp est enregistré côté serveur. Le jeu ensuite fait vivre le timer de son côté et fait la synchro/vérification quand nécessaire.
Ex : Si tu triches en changeant la date de ton mobile. Eventuellement tu verras que ton upgrade est terminée, mais au moment ou tu feras une action, le jeu va appeler le serveur, et le serveur répondra qu'il y a un problème car , l'upgrade est toujours en cours => resynchronisation du timer.
Voilà en gros le système
Bon courage
Re: faire défiler le temps hors jeu sans connexion internet
je comprend bien le systeme , je m’étais poser la question pour le cote "triche" mais vu que ce serait pour une version d'essaie pour le moment ca ne me derange que moyennement.
J'ai beau chercher je ne trouve pas de code simple ou de mon niveau pour enregistrer ce timeStamp ... j'ai pas mal d'autre fonctions a codée donc je vais faire autre chose pour le moment, mais si qq'un connait un page consacrer a ce genre de systeme ( avec ou sans internet ) je suis preneur ! et si possible en français mon anglais étant moyen :s
merci pour votre aide !
J'ai beau chercher je ne trouve pas de code simple ou de mon niveau pour enregistrer ce timeStamp ... j'ai pas mal d'autre fonctions a codée donc je vais faire autre chose pour le moment, mais si qq'un connait un page consacrer a ce genre de systeme ( avec ou sans internet ) je suis preneur ! et si possible en français mon anglais étant moyen :s
merci pour votre aide !
Re: faire défiler le temps hors jeu sans connexion internet
Dans le sytème de sauvegarde de ton jeu, tu sauvegardes la date de l'action réalisée.
Ex:
DateTime CanonUpgrade2 = DateTime.Now;
et tu sauvegardes CanonUpgrade2.
Je connais pas le système de sauvegarde d'unity. d'autres te répondront certainement plus précisément.
Ex:
DateTime CanonUpgrade2 = DateTime.Now;
et tu sauvegardes CanonUpgrade2.
Je connais pas le système de sauvegarde d'unity. d'autres te répondront certainement plus précisément.
Dernière édition par Nixou le 05 Juin 2014 10:51, édité 1 fois.
Re: faire défiler le temps hors jeu sans connexion internet
De manière interne, et très simple c'est PlayerPrefs (voir doc) c'est extrêmement simple à mettre en place. Mais bon, pour une scène ou de multiple scène c'est une autre histoire et dans ce cas il vaut mieux s'orienter vers quelques de plus performant. Soit un plugin, soit une solution comme XmlSerializer mais pour l'exemple et les essais PlayerPrefs fera amplement l'affaire selon moi.Nixou a écrit :Je connais pas le système de sauvegarde d'unity. d'autres te répondront certainement plus précisément.
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !
Re: faire défiler le temps hors jeu sans connexion internet
Sinon il peut lier son jeux à une base de donnée et aller chercher les infos en php via la commande unity : WWW
ainsi il stock l'heure serveur et reprend l'heure serveur . Qu'en pensez vous ?
En plus utiliser la commande www et le php lui permettront de faire un chat assez simple pour un jeux style Ogame c'est un must =)
ainsi il stock l'heure serveur et reprend l'heure serveur . Qu'en pensez vous ?
En plus utiliser la commande www et le php lui permettront de faire un chat assez simple pour un jeux style Ogame c'est un must =)
Re: faire défiler le temps hors jeu sans connexion internet
voila pour le moment où j'en suis .... cela ne donne pas grand chose evidament, je n'arrive meme pas a recuperer le temps du talent restant...
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
using System;
public class Temps : MonoBehaviour {
public float talent =300;
public float talentCur;
public int timeStampActuel;
public int timeStampReconexion;
public bool talent1Actif = false;
// Use this for initialization
void Start () {
DateTime timeStampReconexion = DateTime.Now;
}
// Update is called once per frame
void Update () {
if (Input.GetKey (KeyCode.Z)) {
timeStampActuel = PlayerPrefs.GetInt("temps1",timeStampActuel);
talent = PlayerPrefs.GetFloat("talent",talent);
}
if (Input.GetKey (KeyCode.E)) {
PlayerPrefs.SetInt ("temps1", timeStampActuel);
PlayerPrefs.SetFloat ("temps1", talent);
}
talent1Test ();
}
void talent1Test () {
if (Input.GetKey (KeyCode.A)) {
DateTime timeStampActuel = DateTime.Now;
talent1Actif = true;
}
if ( talent1Actif == true) {
talent -= Time.deltaTime;
}
}
}