août 14

Les Applications Universelles avec Unity

Avec le concept d’Application Universelle, Microsoft propose aux développeur un moyen de rendre le développement plus productif.

Avec la version 4.5.3 d’Unity qui gère ce nouveau paradigme, il est possible désormais de développer une application Windows qui pourra être exécutée indépendamment sur Windows 8, Windows 8.1 ou Windows Phone 8.1.

art05_01

Les Applications Universelles sous Unity bénéficient d’un avantage considérable : elles utilisent le Framework .NET 4.5.1 (et non plus mono). La gestion asynchrones des traitements devient donc un jeu d’enfant depuis l’apparition des mots clef async/await.

Pour rappel, voici un exemple d’un traitement asynchrone avec cette méthode (source MSDN) :

Il s’agit d’une méthode asynchrone qui aura l’avantage certain de ne pas bloquer l’UI lors de l’appel à un traitement qui peut être long (ici httpClient.GetStringAsync ). On notera que le traitement long est aussi une méthode asynchrone et qui peut donc être appelée à l’aide du mot clef await. La valeur de la variable exempleInt sera renvoyée une fois le résultat obtenu mais sans que cela n’affecte le bon déroulement des autres processus actifs, dont l’UI.

Voici un lien vers un article qui traite des recommandations sur la gestion asynchrone : http://msdn.microsoft.com/fr-fr/magazine/jj991977.aspx 

La solution Visual Studio générée lors d’une compilation d’une Application Universelle par Unity se compose :

  • D’un projet de type Shared : il contient le code XAML de présentation, les données internes du moteur et les Assets du projet
  • D’un projet Windows : il contient les librairies spécifiques à la plateforme W8
  • D’un projet Windows Phone : ce dernier contient les librairies de la plateforme Windows Phone

art05_02
(exemple de projet, source Blog Unity)

Notice

Lors du déploiement depuis Visual Studio, seuls les fichiers relatifs au contexte seront déployés automatiquement.

 Source : http://blogs.unity3d.com/2014/08/07/introducing-universal-windows-applications-in-unity/

 

Lien Permanent pour cet article : http://sdotechnologies.com/les-applications-universelles-avec-unity/

août 06

Utiliser SQLite avec Unity

Quel que soit le type d’application à développer avec Unity, la question de la gestion de la persistance des données va se poser tôt ou tard.

Dans de nombreux cas, l’utilisation d’un système de fichier associé à la gestion des préférences utilisateur peut s’avérer suffisant. Toutefois, sur des projets assez complexes dans lesquels la demande fonctionnelle implique une manipulation importante de données, l’utilisation d’une base de données peut présenter quelques atouts intéressants.

Je vous propose dans cet article un tuto très simple dans lequel nous allons apprendre à créer et configurer une base de données SQLite avec Unity.

Pré-requis

Cet outil est très utile pour administrer simplement une base de données. Nous sommes bien sur loin d’un outil avancé, mais il convient parfaitement à SQLite.

SQLiteBrowser

 

Préparation du projet Unity

Pour cet exemple, nous n’avons pas besoin des composants habituels. Depuis le menu File, choisissez l’entrée New Project…

Si comme moi vous préférez utiliser Visual Studio comme IDE, n’oubliez pas de cocher le composant Visual Studio 20XX Tools.unitypackage, comme illustré ci-dessous (ce n’est pas nécessaire si vous utilisez MonoDevelop.

Art02_03

Notice

Note: si vous ne savez pas où trouver le composant pour Visual Studio, lisez-ce post.

Afin de gagner en clarté, dans l’onglet Project nous créons les dossiers suivants :

  • DB : nous placerons la base de données à cet endroit
  • Plugins : ce dossier contiendra les DLL utiles au projet
  • Scripts : nous placerons dans ce dossier les scripts C#
  • Scenes : nous utiliserons ce dossier pour la scène principale

L’onglet Hierarchy devrait alors ressembler à ceci :

Art02_04

A l’aide du menu File, sélectionnez l’entrée New Scene et sauvegardez-la dans le dossier Scenes préalablement créé.

 

Récupération des librairies nécessaires

Nous allons avoir besoin de trois DLL. Ces dernières se trouvent dans le dossier d’installation de Unity.

Les deux premières :

  • System.Data.dll
  •  Mono.Data.Sqlite.dll

Ces fichiers se trouvent dans le dossier suivant :

<Votre Dossier d’installation de Unity>\Data\Mono\lib\mono\2.0

La dernière :

  • sqlite3.dll

Ce fichier se trouve à la racine du dossier d’installation

Copiez ces fichier directement dans le dossier Plugins que nous avons créé.

 

Création de la base de données

Avec l’outil SQLite Browser, créez la base de données à l’aide du bouton New Database et nommez la SampleDB.

Lors de la création, sélectionnez le dossier DB que nous avons créé auparavant dans l’onglet Project. Le chemin se trouve dans le dossier du projet, qui revêt la forme suivante :

<Votre emplacement Projet>\DemoSQLLite\Assets\DB

Dans l’onglet Database Structure, créez une table à l’aide du bouton Create Table et nommez-la Customer.

Nous allons créer deux champs de type différent pour illustrer l’exemple :

  • ID : l’identifiant du Customer. Ce champ est obligatoire, c’est une clef primaire de type INTEGER qui s’auto incrémente.
  • UserName : le nom d’utilisateur du Customer. Ce champ est de type TEXT et il est obligatoire.

Art02_05

Ajoutez à présent quelques données de test depuis de l’onglet Browse Data, à l’aide du bouton New Record.

Art02_06

Les Scripts Unity

Nous allons créer ici quelques classes qui pourront être utilisées dans d’autres projets. Il s’agit bien sur d’un embryon de couche d’accès aux données, mais il est possible de le développer selon les besoins fonctionnels.

Globalement, voici le modèle que nous allons utiliser :

Art02_07

Voici les explications concernant ces entités (Le code viendra ensuite).

  • CustomerEntity : il s’agit du mapping de la table Customer. Il est réalisé manuellement car il n’est pas possible d’utiliser un ORM comme LinqToSQL ou LinqToEntity. Cette Classe est le modèle objet relatif à la table présente dans la base. Les champs de la base sont devenus des propriétés.
    Afin de garder la cohérence avec la base de données, nous avons déclarer le constructeur sans paramètre en privé. En effet, La base impose un ID et un UserName obligatoire. Nous avons donc créé un constructeur qui respecte cet état et qui lui est public (vous le verrez dans le code).
  • DBHelper : c’est la classe de base destinée à gérer les connexions à la base de données. Une méthode CheckConnection a été ajoutée afin de laisser la possibilité à l’utilisateur de vérifier sa connexion. Une connexion embarquée a été ajoutée mais un autre constructeur de cette classe permet bien sur d’en utiliser une autre.
  • ConnectionResult : il s’agit d’une simple classe utilisée par la méthode CheckConnection de la classe DBHelper, afin de faciliter le debugage.
  • CustomerEntityHelper : cette classe est destinée à fournir les informations de la base relative aux entités CustomerEntity. Elle hérite de DBHelper et se spécialise dans le rtaitement des résultats liées à la table Customer. elle possède une méthode GetAllCustomers qui renvoie une collection typée de CustomerEntity (CustomerEntity  ne pouvant être explicitement liée aux accès aux données de la base).

Notice

 Ces scripts n’héritent pas de MonoBehavior. En effet, il s’agit de scripts fonctionnel métier qui n’ont aucun intérêt à cet héritage, ces dernier pouvant d’ailleurs faire partie d’une librairie à part du projet Unity.

Voici le code de ces classes.

CustomerEntity.cs

 DBHelper.cs

CustomerEntityHelper.cs

ConnectionResult.cs

Enfin, passons au script qui va être utilisé sur un GameObject. Ce script est destiné à créer un UI des plus succincte afin de tester les accès à la base et les communications. Il hérite donc de MonoBehavior.

SampleDB.cs

Notice

Enregistrez ces scripts dans le dossier Scripts prévu à cet effet (dans l’onglet Project).

Affichage du résultat

Depuis le menu GameObject, créez un GameObject dans la scène principale en utilisant l’entrée Create Empty. Ce GameObject est destiné à accueillir le script SampleDB. Nommez le SampleDBGameObject.

Affectez le script SampleDB.cs (dans le dossier Scripts de l’onglet Hierarchy) au GameObject SampleDBGameObject présent dans l’onglet Hierarchy.

Un clic sur le bouton “Check Connection” vérifie la connexion à la base et affiche le bouton de récupération

Après exécution voici ce que vous devez obtenir.

Art02_08

 

Avec cette structure nous avons veillé à bien séparer les couches (données, métier et affichage). Dans un prochain article sur ce sujet je développerai plus en profondeur les différentes actions liées à la base SQLite et à son utilisation avec Unity.

 

Lien Permanent pour cet article : http://sdotechnologies.com/utiliser-sqlite-avec-unity/

août 05

Sortie d’un livre sur la réalité augmentée avec Unity

Il s’agit de mon premier ouvrage réalisé pour les éditions ENI.

BookRA01

 

Ce livre s’adresse à un public de développeurs désireux d’apprendre à développer leurs propres solutions de réalité augmentée à l’aide du moteur 3D temps réel Unity. L’objectif principal a été de proposer un Workflow complet pour le développeur. Cela passe par la définition des besoins jusqu’au déploiement sur divers supports (PC, smartphones, tablettes, etc.)

Les exemples du livre sont écrits en C# et sont disponibles en téléchargement sur le site www.editions-eni.fr.

 

Voici la table des matières

  • Appréhender la réalité augmentée
    • 1. Les concepts généraux
      • 1.1 La réalité augmentée
      • 1.2 Les différents types d’implémentation
      • 1.3 Les applications du marché
    • 2. L’environnement de travail
      • 2.1 Le choix d’Unity 3D comme moteur temps réel
      • 2.2 Le choix de l’environnement de développement
      • 2.3 Les différentes plateformes
    • 3. Les pré-requis et rappels
      • 3.1 Informations sur la programmation objet pour Unity
      • 3.2 Un environnement 3D temps réel
      • 3.3 Les outils de développement conseillés
    • 4. Conclusion
  • Comprendre et utiliser Unity
    • 1. L’interface utilisateur
      • 1.1 L’organisation des fenêtres de travail
        • 1.1.1 L’onglet Scene
        • 1.1.2 L’onglet Game
        • 1.1.3 L’onglet Project
        • 1.1.4 L’onglet Inspector
        • 1.1.5 L’onglet Hierarchy
        • 1.1.6 L’onglet Console
      • 1.2 Les menus
        • 1.2.1 La gestion du projet avec les menus File et Edit
        • 1.2.2 La gestion des scènes avec les menus File et Edit
        • 1.2.3 La gestion des Assets avec les menus GameObject, Assets et Components
      • 1.3 Paramétrer son espace de travail
        • 1.3.1 Les différents Layouts
        • 1.3.2 Modifier un environnement de travail
    • 2. Les différentes entités conceptuelles
      • 2.1 Présentation des entités
        • 2.1.1 Les scènes
        • 2.1.2 Les GameObjects
        • 2.1.3 Les Components
      • 2.2 Combinaison de contenus
        • 2.2.1 Les Prefabs
        • 2.2.2 Les Assets et les Packages
      • 2.3 La gestion de la caméra
        • 2.3.1 Le GameObject Camera
        • 2.3.2 Gérer plusieurs caméras dans une scène
    • 3. Les interactions entre les différentes entités
      • 3.1 Programmer les scripts et comprendre MonoBehaviour
        • 3.1.1 Création des scripts
        • 3.1.2 Rôle de MonoBehaviour
        • 3.1.3 Scripts de conception
        • 3.1.4 Communication entre les entités
        • 3.1.5 La gestion des préférences utilisateur
      • 3.2 Les outils pour déboguer son code
        • 3.2.1 L’objet Debug et le Log
        • 3.2.2 Les points d’arrêt avec MonoDevelop
      • 3.3 La gestion différée des actions sous Unity
        • 3.3.1 L’invocation
        • 3.3.2 Les Coroutines
      • 3.4 Définir une interface utilisateur
        • 3.4.1 Les outils de création d’interfaces utilisateur
        • 3.4.2 La gestion d’une interface avec NGUI
    • 4. Les différentes plateformes
      • 4.1 Connaître les principaux formats de sortie
        • 4.1.1 Les applications Standalone
        • 4.1.2 Les applications iOS
        • 4.1.3 Les applications Android
        • 4.1.4 Les applications Windows Store
        • 4.1.5 Les applications Windows Phone 8
        • 4.1.6 Les applications WebPlayer
      • 4.2 Gestion des contraintes liées aux plateformes
        • 4.2.1 Les applications pour mobile
        • 4.2.2 Le WebPlayer et sa Sandbox
    • 5. Conclusion
  • Étude d’un framework de réalité augmentée
    • 1. Le plug-in de réalité augmentée
      • 1.1 Vue d’ensemble
        • 1.1.1 L’architecture proposée
        • 1.1.2 Utilisation du Target Manager
      • 1.2 Gérer le contenu
        • 1.2.1 Gestion du contenu par des marqueurs
        • 1.2.2 Conseils et bonnes pratiques
    • 2. L’intégration dans Unity
      • 2.1 Présentation et installation
        • 2.1.1 Récupération du plug-in et installation
        • 2.1.2 Les Prefabs du plug-in
      • 2.2 Marqueurs et fonctionnalités avancées
        • 2.2.1 Exemple d’un marqueur de type Image
        • 2.2.2 Les boutons virtuels
        • 2.2.3 L’utilisation du cloud
    • 3. Conclusion
  • Exemple d’un projet de réalité augmentée
    • 1. Définition et préparation
      • 1.1 Structurer le projet
        • 1.1.1 Définition du périmètre fonctionnel
        • 1.1.2 Choix de la plateforme de sortie
      • 1.2 Définition du contenu
    • 2. Développer l’application
      • 2.1 Le projet Unity
        • 2.1.1 Mise en place et configuration
        • 2.1.2 Import des Assets
        • 2.1.3 Le Manager d’application
        • 2.1.4 La localisation
      • 2.2 Intégration de la réalité augmentée
        • 2.2.1 Création des marqueurs
        • 2.2.2 Création de la base de données de marqueurs
      • 2.3 Gestion des scènes
        • 2.3.1 Les scènes satellites
        • 2.3.2 La scène principale
      • 2.4 Déploiement et améliorations
        • 2.4.1 Compiler et déployer sur Android
        • 2.4.2 Conclusion
  • Aller plus loin
    • 1. L’Asset Store
      • 1.1 Des composants et plug-ins conseillés
      • 1.2 Créer et monétiser avec l’Asset Store
    • 2. L’aspect social et les communautés
      • 2.1 Les réseaux sociaux dans les applications
      • 2.2 Ressources web
    • 3. En conclusion

 

Cliquez ici pour obtenir la fiche descriptive sur le site de l’éditeur.

Lien Permanent pour cet article : http://sdotechnologies.com/sortie-dun-livre-sur-la-realite-augmentee-avec-unity/

juil 30

Visual Studio Tools pour Unity (ex UnityVS)

Très bonne nouvelle, l’ancien Plug-in payant UnityVS, qui permet d’utiliser Visual Studio avec Unity est à présent GRATUIT.

Depuis le rachat de la société éditrice par Microsoft, on attendait ce moment avec impatience. A présent, il est tout à fait possible de déboguer son code avec Visual Studio.

MonoDevelop est un bon produit, mais un développeur qui utilise Visual Studio préférera probablement ce dernier.

UnityVS

 

J’avais pris pour habitude de développer mon code avec Visual Studio et d’utiliser MonoDevelop pour effectuer le Debug. A présent, je peux rester sous mon IDE favori et cela n’a pas de prix :)

Pour le télécharger gratuitement, c’est par ici !

Lien Permanent pour cet article : http://sdotechnologies.com/visual-studio-tools-pour-unity-ex-unityvs/

juil 23

Sortie de QuadX, jeu gratuit pour Windows 8

Après une version pour Android, voici l’arrivée de Quand X pour les PC tournant sous Windows 8.x.

Il s’agit d’un jeu très simple et amusant (je l’espère ;) ) qui propose aux joueurs d’enfermer des balles en supprimant des zones entières de carrés (des Quads). L’objectif est de séparer les balles les unes des autres et d’éliminer un maximum de Quads.

Il y a plusieurs niveaux disponibles et des succès à débloquer. Pour les plus courageux, une option Time Attack est disponible !

800x480_04_FR

Pour le télécharger gratuitement, cliquez ici.

 

Le jeu a été entièrement réalisé avec Unity 3D et Visual Studio

Lien Permanent pour cet article : http://sdotechnologies.com/sortie-de-quadx-jeu-gratuit-pour-windows-8/

juil 20

Un gestionnaire de concours sur Facebook

Des Concours

Il existe de nombreuses pages Facebook qui propose des concours, notamment celles relatives aux blogs. On peut noter que les sujets de ces blogs sont aussi divers que variés (Jeux, Cuisine, etc. ).

Très souvent, il s’agit de “Liker” une page ou bien de la partager. L’organisateur doit alors vérifier qui a effectué ces opérations, repérer les noms et effectuer un tirage au sort. Très souvent ces opérations sont effectuées manuellement…

Avec une dizaine de participants ce n’est pas bien grave. Mais plus le nombre augmente et plus cela devient fastidieux.

La solution QWin Manager

Art03_02

J’ai donc développé un petit outil (en C#) sans prétention qui propose de gérer des concours avec gestion des participants, connexion à Facebook et récupération des “Likeurs” et des Partageurs.

  • Qu’est-ce que Qwin Manager ?

Il s’agit d’un logiciel d’aide au tirage au sort de gagnants pour des concours.

  • Quelles sont ses fonctionnalités ?

Ajout manuel de participants
Import de participants provenant de Facebook
Tirage au sort de gagnants
Sauvegarde de Concours

  • Quel est le rapport avec Facebook ?

Très souvent les Concours utilisent Facebook comme support. Ils demande par exemple que les utilisateur aiment une publication pour y participer.
Qwin Manager permet de récupérer en un clic les personnes qui ont aimé et/ou partagé une publication (pratique quand il y a de nombreux participants !).

  • J’ai une page Facebook en plus de mon compte, ça marche aussi ?

Oui, il est possible d’utiliser les publications provenant d’une page. Pour cela, indiquez l’identifiant de la page depuis le menu Outils->Configuration.
Pour trouver l’identifiant de la page Facebook, il faut aller dans les paramètres de la page sur Facebook (Modifier les paramètres, onglet ‘informations sur la page’)

  • Je souhaite éviter les doublons, c’est possible ?

Oui, dans le menu Outils->Configuration il est possible d’activer ou pas la prise en compte des doublons dans la liste des participants.

  • Comment effectuer un tirage au sort de ma liste de participants ?

Dans le menu Outils, cliquez sur l’entrée ‘Tirage au sort’. C’est aussi simple que ça :)

  • Quelle la la configuration pour l’utiliser ?

Il est nécessaire d’avoir un PC sous Windows (testé sus Windows 7, 8 et 8.1 – devrait fonctionner sous Vista). Pas de version Mac pour le moment.

Téléchargement et Tuto Vidéo

ButtonDownload

ButtonTutoVideo

Important!

Note au utilisateurs de l’antivirus AVAST : Veuillez désactiver la sandbox de cet antivirus pour installer QwinManager. Pour faire cela : http://blog.av-soft.ch/faq/avast-generalites/desactiver-autosandbox-deepscreen/

Dernière info : c’est entièrement GRATUIT et sans pub ! :D

 

Lien Permanent pour cet article : http://sdotechnologies.com/un-gestionnaire-de-concours-sur-facebook/