🠔 Back

Superficia


Project Status
Ongoing (Beta Release)
Project Type
Graduation Project
Project Duration
~2 years
Roles
CTO, Unity & C# Developer
Team Size
6
Software Used
Visual Studio 2022, Rider 2022, Unity 2021
Languages Used
C# / .NET Standard 2.1 & .NET 6

About Superficia

Superficia is an application for professionals that brings a new vision to the organization of spaces. This tool allows to define several layout solutions based on constraints, which can then be adjusted by the user. Thanks to an algorithm, it is therefore possible to respect multiple constraints such as spacing, existing furniture, electrical outlets, windows, axes of passage. The application provides a 2D and 3D visualization of the rearranged space.

Superficia Image


Introduction

Superficia se compose de plusieurs projets sous forme de librairies afin de simplifier la maintenance et répartir le travail plus facilement. Je vais uniquement aborder les librairies auxquelles j'ai contribué et les librairies dont j'ai géré le développement.

Superficia.Unity
Le projet principal de Superficia, il contient le code du logiciel qui est développé sous Unity.

Superficia.Unity.UI
Un package Unity qui contient tous les éléments d'interface du logiciel.

Superficia.Unity.Localization
Un package Unity qui implémente un système de localization custom car celui d'Unity ne correspondait pas à nos besoins et attentes.

Superficia.Models
Un package Unity et un package NuGet qui contient les modèles de données commun entre le logiciel et l'algorithme de Superficia.

J'ai également mis en place la CI avec CircleCI et un script développé pour l'occasion car rien ne correspondait à nos besoins pour de l'intégration continue avec Unity.


Superficia.Models

La représentation des données pour le logiciel de Superficia et son algorithme ont été un des premiers problèmes rencontrés. Dans un premier temps, chaque partie avait son propre modèle de données. Cependant, nous avons rapidement constaté que cela entraînait de nombreux problèmes, notamment sur le système de coordonnées et les relations entre les éléments.

Nous avions également une autre contrainte : le stockage de ces données. Pour cela nous utilisons Realm.io, un système de base de données locale simple et performant.

Il a donc été décidé de créer un projet séparé, sous la forme d'un package Unity et NuGet afin d'uniformiser les modèles de données.


Superficia.Localization