[RESOLU] Bug build version

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
Fiyeurfox
Messages : 72
Inscription : 25 Juin 2015 20:11

[RESOLU] Bug build version

Message par Fiyeurfox » 05 Juin 2019 22:02

bonsoir

déja petit info importante a prendre en compte se projet se déroule sur macOS et sur unity 2017.3 (imposer par mon ecole ).

je situe un peut le contexte :
- je suis en train de faire un exercice a but pédagogique il s'agit d'un petit un puzzle game
- qui contient 1 scene regroupent les menue d'option et le menue principale, une autre pour la selection de niveaux, et 6 scene qui sont mes niveaux.

j'ai strictement aucune erreur ou warning dans la console.
sa build (aucune erreur ou warning dans la console) ! donc bon la je me dis trop bien sa marche !!! je lance le jeu (sa marche encore)
mais une fois arriver au nv 3 sa crash pas de message d'erreur compréhensible dans player.log ni dans le conte rendue de crash que macOS veux envoyer a apple.

je vous mais des piece jointe si vous voulez regardé. (a bas je peut pas : format incorrect ".txt" mais apres recherche le faq il faut une autorisation)

du coup voila une petite partie du .log

Code : Tout sélectionner

Initialize engine version: 2017.3.0f3 (a9f86dcd79df)
GfxDevice: creating device client; threaded=1
2019-06-05 21:36:44.685 in the shadowhope[1591:29290] Color LCD preferred device: AMD Radeon Pro 555 (high power)
2019-06-05 21:36:44.685 in the shadowhope[1591:29290] Metal devices available: 2
2019-06-05 21:36:44.685 in the shadowhope[1591:29290] 0: Intel(R) HD Graphics 630 (low power)
2019-06-05 21:36:44.685 in the shadowhope[1591:29290] 1: AMD Radeon Pro 555 (high power)
2019-06-05 21:36:44.685 in the shadowhope[1591:29290] Forcing user selected device: AMD Radeon Pro 555 (high power)
Initializing Metal device caps: AMD Radeon Pro 555
Begin MonoManager ReloadAssembly
- Completed reload, in  0.024 seconds
WARNING: Shader Unsupported: 'Hidden/VideoDecodeOSX' - Pass 'FLIP_RGBARECT_TO_RGBA' has no vertex shader
WARNING: Shader Unsupported: 'Hidden/VideoDecodeOSX' - Setting to default shader.
WARNING: Shader Unsupported: 'Hidden/BlitToDepth' - Pass '' has no vertex shader
WARNING: Shader Unsupported: 'Hidden/BlitToDepth' - Setting to default shader.
WARNING: Shader Unsupported: 'Hidden/BlitToDepth_MSAA' - Pass '' has no vertex shader
WARNING: Shader Unsupported: 'Hidden/BlitToDepth_MSAA' - Setting to default shader.
Metal RecreateSurface[0x10a4dcd60]: surface size 2048x1280
Setting up 4 worker threads for Enlighten.
  Thread -> id: 70000569d000 -> priority: 1 
  Thread -> id: 7000057a3000 -> priority: 1 
  Thread -> id: 700005826000 -> priority: 1 
  Thread -> id: 700005720000 -> priority: 1 
UnloadTime: 1.852101 ms
Uploading Native Crash Event: {"report_version":1,"event_json":"{\"project_id\":\"d45b7850-0f60-44a2-ba97-f1abc64c7ff0\",\"deviceid\":\"EB6D3C7F-9AE8-5653-94ED-1308348DEA83\",\"clouduserid\":\"f562aca7af2bf44c2add94b11149305b\",\"sdk_ver\":\"u2017.3.0f3\",\"platformid\":1,\"sessionid\":5680719009110423511,\"version\":\"1.0\",\"build_guid\":\"c830993277d914875a32063fca44b49b\",\"os\":\"Mac OS X 10.14.5\",\"cpu\":\"Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz\",\"device_model\":\"MacBookPro14,3\",\"gfx\":\"AMD Radeon Pro 555\",\"signal_number\":4294967295,\"signal_number_string\":\"SIGSEGV\",\"signal_code\":4294967295,\"signal_code_string\":\"SEGV_MAPERR\",\"signal_address\":33,\"signal_pc\":51539607563,\"threads\":[{\"name\":\"\",\"crashed\":true,\"frames\":[{\"image_name\":\"\",\"image_uuid\":\"\",\"absolute_pc\":4598094097,\"relative_pc\":0,\"managed\":true,\"managed_frame_desc\":\"Mono JIT frame\"},{\"image_name\":\"\",\"image_uuid\":\"\",\"absolute_pc\":4539185407,\"relative_pc\":0,\"managed\":true,\"managed_frame_desc\":\"Mono JIT frame\"},{\"image_name\":\"/Users/jchenaud/unity project/In_Shadows/build/in the shadowhope.app/Contents/Frameworks/Mono/MonoEmbedRuntime/osx/libmono.0.dylib\",\"image_uuid\":\"5cfc473c5d5438e98333678765bd7104\",\"absolute_pc\":4531986894,\"relative_pc\":41422,\"managed\":false,\"managed_frame_desc\":\"\"},{\"image_name\":\"/Users/jchenaud/unity project/In_Shadows/build/in the shadowhope.app/Contents/Frameworks/Mono/MonoEmbedRuntime/osx/libmono.0.dylib\",\"image_uuid\":\"5cfc473c5d5438e98333678765bd7104\",\"absolute_pc\":4533217974,\"relative_pc\":1272502,\"managed\":false,\"managed_frame_desc\":\"\"},{\"image_name\":\"/Users/jchenaud/unity project/In_Shadows/build/in the shadowhope.app/Contents/MacOS/in the shadowhope\",\"image_uuid\":\"58d55c45ab4c31aa8e9497502aea3279\",\"absolute_pc\":4304801520,\"relative_pc\":9834224,\"managed\":false,\"managed_frame_desc\":\"\"},{\"image_name\":\"/Users/jchenaud/unity project/In_Shadows/build/in the  
.......
 sa continue un bon moment 

Unloading 35 unused Assets to reduce memory usage. Loaded Objects now: 592.
Total: 0.838614 ms (FindLiveObjects: 0.503172 ms CreateObjectMapping: 0.014304 ms MarkObjects: 0.235903 ms  DeleteObjects: 0.084166 ms)

Unloading 6 Unused Serialized files (Serialized files now loaded: 0)
UnloadTime: 1.986096 ms
System memory in use before: 56.4 MB.
System memory in use after: 55.2 MB.

Unloading 23 unused Assets to reduce memory usage. Loaded Objects now: 444.
Total: 1.089852 ms (FindLiveObjects: 0.736810 ms CreateObjectMapping: 0.018149 ms MarkObjects: 0.225912 ms  DeleteObjects: 0.107610 ms)

c'est bien la premiere fois que ce genre de chose m'arrive et je suis un peut pommé :?

quelle et la démarche pour debug ce genre de chose ?

merci :merci: et bonne soirée
JC

Avatar de l’utilisateur
Fiyeurfox
Messages : 72
Inscription : 25 Juin 2015 20:11

Re: Bug build version

Message par Fiyeurfox » 05 Juin 2019 22:43

just petit complement je pence pas que ce soit lier mais j'ai un scripte qui a pas la petite coche dans l'inspecteur en haut a gauche

et je sais pas trop a quoi c'est due . le scripte en lui meme et pas tres interessant donc je vous embêterez pas avec. mais sa attire ma curiosité

ma supposition vien du faite qu'il ne contient aucun Update ni start et ne contient que des fonction
Pièces jointes
Capture d’écran 2019-06-05 à 22.35.39.png
Capture d’écran 2019-06-05 à 22.35.39.png (9.25 Kio) Consulté 3703 fois
JC

Avatar de l’utilisateur
Fiyeurfox
Messages : 72
Inscription : 25 Juin 2015 20:11

Re: Bug build version

Message par Fiyeurfox » 06 Juin 2019 13:11

re
je me permet de repost car je pence avoir fait une avancer dans la compréhension de mon probleme .

Code : Tout sélectionner

void Update () {
        Debug.Log("coucou");

        try
        {
            Debug.Log("coucou 1.5");

            foreach (GameObject obj in validation_obj)
            {
                Debug.Log("coucou f");

                try
                {
                    Debug.Log("coucou 2"); // ici

                    if (obj.GetComponent<Raycast_test>().valide == false)
                        return;
                    Debug.Log("coucou 2.5"); 

                }
                catch
                {
                    Debug.Log("coucou 3");

                    try
                    {
                        if (obj.GetComponent<valide_stay_triger>().valide == false)
                            return;
                    }
                    catch
                    {
                        print("no valide script on this obj");
                    }
                    Debug.Log("out");
                }
            }
        }
        catch
        {
            Debug.LogError("Foreach bug");
        }
		if(victory  ==  false)
		{
            Debug.Log("level is supse to finish in sec ");

            try
            {
			victory_menue.SetActive(true);
			}
			catch
			{
				Debug.Log("WTF");
			}
			// if(Lv > PlayerPrefs.GetInt("last_lv_unlock") ||  Lv + 1 > PlayerPrefs.GetInt("last_lv_unlock"))
			// {
			// 	if(0 != PlayerPrefs.GetInt("last_lv_unlock"))
			// 		PlayerPrefs.SetInt("last_lv_unlock", Lv + 1);
			// 	else
			// 		PlayerPrefs.SetInt("last_lv_unlock", Lv);

			// }
			victory =  true;
            Debug.Log("level is Finich");
		}

		
	}
}
il semblerait que les try catch ne fasse pas correctement leur travaille en build (mais sa fonctionne dans l'inspecteur)

la par exemple mon player.log affiche le Coucou2 puis crach

donc il plante sur

Code : Tout sélectionner

if (obj.GetComponent<Raycast_test>().valide == false)
qui est dans un try

ma question et donc y a t'il quelque chose a faire pour que les try et le maime comportement dans l'inspecteur et en build sous macOS ?


merci pour votre attention :merci: :merci:
JC

Avatar de l’utilisateur
Max
Messages : 8771
Inscription : 30 Juil 2011 13:57
Contact :

Re: Bug build version

Message par Max » 06 Juin 2019 14:19

Bonjour,

Je ne sais pas si cela aidera, mais niveau code, ce que je lit dans ton dernier message est une véritable horreur (si je peux me permettre). Tous ces try/catch les uns dans les autres. On n’utilise pas de try/catch dans du code critique, à fortiori dans les Update. C'est terriblement gourmand en ressource, cela doit être l'exception, le dernier recours (et surtout pas dans les éléments de la boucle de jeu). J'ai l'impression que tu t'en sert comme des if(){}, non ?
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
Fiyeurfox
Messages : 72
Inscription : 25 Juin 2015 20:11

Re: Bug build version

Message par Fiyeurfox » 06 Juin 2019 14:36

enfaite oui je m'en sert comme des if avec la particularité que si un des component n'exite pas je ne crache pas (du moins dans l'inspecteur). cela me permet donc de parcourir tout mes object et de verifier si il remplisse les condition de validation du puzzle (car certain obj on un scripte et d'autre un autre) cela me permettait donc généralisé

il me serve donc que dans ce scripte et je n'est pas vue mes perf descendre de façon significative

actuellement ya plus de try cach que de raison car j'essayait de trouver l'erreur mais du coup je vais refaire mon scripte.

pour se qui est de l'optimisation ya t'il une doc ou une "norme" a suivre ?

merci beaucoup . :merci: :merci:

cependant je reste perplexe sur la difference du comportement entre le build et l'inspecteur 8/



edit :

Code : Tout sélectionner

	public GameObject [] validation_obj_ray;
    public GameObject [] validation_obj_box;

    public GameObject victory_menue;
    bool victory = false;
    void Update()
    {
        foreach (GameObject obj in validation_obj_ray)
        {
            if (obj.GetComponent<Raycast_test>().valide == false)
                return;
        }
        foreach (GameObject obj in validation_obj_box)
        {
            if (obj.GetComponent<valide_stay_triger>().valide == false)
                return;
        }
        if (victory == false)
        {
            victory_menue.SetActive(true);
            victory =  true;
            Debug.Log("level is Finich");
        }
    }
voila c'est un peut plus embêtant car ils y a plusieurs liste a parcourir en fonction des scripte present dans les niveaux. mais sa devrais marcher ! je vais "remaper" mes niveaux. mais je reste curieux de comprendre la difference entre build et inspecteur
JC

Avatar de l’utilisateur
Max
Messages : 8771
Inscription : 30 Juil 2011 13:57
Contact :

Re: Bug build version

Message par Max » 06 Juin 2019 18:26

Fiyeurfox a écrit :
06 Juin 2019 14:36
enfaite oui je m'en sert comme des if avec la particularité que si un des component n'exite pas je ne crache pas (du moins dans l'inspecteur). cela me permet donc de parcourir tout mes object et de verifier si il remplisse les condition de validation du puzzle (car certain obj on un scripte et d'autre un autre) cela me permettait donc généralisé
Je ne connais pas l'architecture ton projet et tes choix techniques. En règle générale, on évite de faire des tests de nullité sur les références au sein de l'Update, on le fait en amont, ou au pire dans des fonctions connexes.
Fiyeurfox a écrit :
06 Juin 2019 14:36
il me serve donc que dans ce scripte et je n'est pas vue mes perf descendre de façon significative
Si ton appli n'est pas très gourmande, cela doit passer sans soucis j'imgaine. Maintenant, tu fais comme tu veux, c'est juste un conseil de base. Ceci dit chaque instruction à un rôle, et c'est bien d'en tenir compte ;)
Fiyeurfox a écrit :
06 Juin 2019 14:36
pour se qui est de l'optimisation ya t'il une doc ou une "norme" a suivre ?
oui bien sûr, la doc unity (tiens, je vais voir pour en faire un TIP, résumant un peu ce qu'il en ressort) :
Optimizing scripts in Unity games
Optimizing Scripts
10000 Update() calls
Understanding optimization in Unity
Optimizing garbage collection in Unity games
Fiyeurfox a écrit :
06 Juin 2019 14:36
cependant je reste perplexe sur la difference du comportement entre le build et l'inspecteur 8/
On a tous connu cela. Cela roule au sein de l'éditeur, mais le build crash lamentablement. Dans l'éditeur, Unity contrôle pas mal de chose, et met quelques gardes fou, qui ne sont plus là avec l'exe. De plus bien souvent, à partir de l'éditeur, on ne teste que par partie notre application, se qui fait que certaines choses passent à l'as. Le profiler est important pour cela, car il permet de mettre en évidence bien des choses qui ne sautent pas forcément aux yeux quand on passe reste cantonné au mode Play de l'éditeur.
Fiyeurfox a écrit :
06 Juin 2019 14:36
voila c'est un peut plus embêtant car ils y a plusieurs liste a parcourir en fonction des scripte present dans les niveaux. mais sa devrais marcher ! je vais "remaper" mes niveaux.
Comme dit au début, je n'ai pas les éléments qui constituent ton projet. Mais je t'avoue que quand je vois une boucle avec les obj.GetComponent<valide_stay_triger>().valide, alors qu'il existe des callbacks dédiés pour ce tytpe d'événements (OnTriggerStay2D par exemple), je m’interroge.

PS: je déplace le sujet dans la section script, qui semble plus appropriée visiblement.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
Fiyeurfox
Messages : 72
Inscription : 25 Juin 2015 20:11

Re: Bug build version

Message par Fiyeurfox » 07 Juin 2019 22:21

deja merci ! j'ai plus de soucis a ce niveaux

merci pour la doc sa fera de la bonne lecture.
Comme dit au début, je n'ai pas les éléments qui constituent ton projet. Mais je t'avoue que quand je vois une boucle avec les obj.GetComponent<valide_stay_triger>().valide, alors qu'il existe des callbacks dédiés pour ce type d'événements (OnTriggerStay2D par exemple), je m’interroge.
:gene: :gene:

oui oui je sais pas si c'est le plus propre ( j'utilise bien les OnTriggerStay ). il ya beaucoup de cas possible des object doive etre dans des box d'autre pas. donc j'ai préféré faire un scripte qui vérifie si un ensemble et valide, et un autre scripte qui fait le tour de ces ensemble de boite pour verifier si leur condition son rempli d'ou le ".Valide" sa me paraissait le plus simple , surtout pasque je doit faire plusieurs niveaux donc j'ai préféré tout bien compartimenté et juste a avoirs a placer mais different scripte au bon endroit.

en d'autre terme par ex : j'ai 2 ensemble de 3 boite chacun

Code : Tout sélectionner

valide_stay_triger.valide 
sera a true sur mon premier object seulement si ces 3 boite son Ok et apres dans un autre scripte je vais parcourir jusqu'à trouver le premier ensemble invalide et si il y'en a pas j'ai gagné :frime:

je sais pas si j'ai été tres claire.

en tout cas vraiment merci pour ton aide :amen:

bonne soirée

edit : pour moi la question étant sur mon problème de build je pence que le sujet et résolu.
JC

Répondre

Revenir vers « Scripting »