FEBRUARY 2017

INTRODUCTION AND DIRECTION OF THE PROJECT - Lauriane

Introduction

For Unexpected, February was an intense month, with a lot of new things and challenges. It tested the team’s qualities, both in terms of efficiency and dedication. The team had a double objective : to communicate for the first time on their first game, dWARf, and to work on the dwarf editor, the first feature of the game that should be shown at “Lyon eSport” (a french LAN-party gathering several competitions on League of Legends).

 

    “Lyon eSport” was the first real close deadline for Unexpected, that, until now, organised itself around mid and long-term objectives. It was also an inflexible deadline as the event took place on March 4th and we had to be ready by this date. Actually, it’s a public presentation, so we needed a perfect product that summarizes our work accurately.

 

    These month’s blogs were written around this context and these objectives to share February’s adventures.

These blogs represent a first exercise for us and we will try to improve them constantly, so don’t hesitate to give us your feedback !

Project management

The idea of going to “Lyon eSport” came out by chance, as we learnt that the event had a dedicated area for independent video games. dWARf was at the very beginning of its development (and 3D graphics were barely started). Wanting to present something to people so early was ambitious.

      However, I still made a meeting with the team to gather everyone’s opinion about our ability to create something that we could share to people before March. We all agreed that it was impossible for us to create a demo of the game before this date : there are too many gameplay and animations prerequisites, not to mention that there were no texture and that we needed to work both on character design and environment, all in 3D.

 

     An alternative quickly came to our minds : the economic model of the game and the rewards essentially based on the cosmetic aspect of the dwarf, we considerably reduced the amount of tasks by deciding to focus on the dwarf editor, first feature of the game the players will encounter when they will launch dWARf for the first time.

 

      The dwarf editor was already conceived and even partially coded. It needed an interface, and, of course, 3D objects and textures that will be incorporated into the dwarf.

     We all agreed on the amount of objects to be modeled and textured for “Lyon eSport”, and on their originality. We chose very different pieces to give a preview of the future variety of esthetic objects available. We also selected some animations that needed to be incorporated into the dwarf to make it look alive.

 

     The interface was already discussed in a meeting, during which we made ergonomic and aesthetic decisions. However, we had to set the limits of the dwarf editor’s interface we were going to show at “Lyon eSport”.

 

     The bright side is that our gameplay programmer could also work on a prototype which will probably be the subject of an upcoming blog.

While they worked on it, I spoke with our multiplayer programmer about making an Alternate Reality Game (ARG) with the community on social networks. The purpose was to prepare the pre-alpha and to give the opportunity to very involved people to take part in the very first releases of the game and in various tests.

 

    This ARG also gave us the possibility to introduce dWARf and its universe before “Lyon eSport” and to reveal a bit more about this new project.

 

    For more information about the progress of the ARG, take a look at This document sums up all the game created by the fantastic community who participated.

 

    Making this ARG was a new and very rewarding experience, but it was a very hard project to manage by a little team like ours. It took a lot of time and a daily involvement. It was also our first community contact, so we had to be very present to understand all expectations and immediately take into account the remarks to evolve the game (especially in its difficulty). Overall, for us, the ARG was a complete success, even if we will not do it every two months

!

2D GRAPHICS - Audrey

After mentioning the need to work on the dwarf editor’s interface, I made 2-3 proposals and refined one of them in a rather cartoon and colored style ; maybe even a little too much. My personal productions being generally lightly saturated, when it comes to flat, I allow myself bright colors ! 

Between “Lyon eSport”’s deadline and my personal excitement to suggest something quickly, we didn’t really think about the style we want. But the quick realisation of the first prototypes made us realise the issue of this first approach :
      As a matter of fact, the game will be visually rich and in 3D, even the pages out of the game. To stay clear and modern, the interface must therefore be able to overlap on a relatively charged universe. And as we were not remastering Adibou (Adibou is a french educational children’s game with very simple 2D graphics, ed.), I had to find a new graphical angle of attack.
      We talked about sober current websites/applications’ interfaces and subtils and “sensuals” interactive animations. This direction seemed more appropriate. 

For the editor, we also needed outfits to try them on our dwarves. Liam drew some elements to begin modeling them.
I added a lot of hair type elements (mustache, beard, hairstyle, eyebrows) and I could start working on a key point : the concept art of their outfits. For homogeneity, I first worked on full sets (having a harmonious dwarf is nice!).
     But after a few days, the team emphasized that working by object type seemed more appropriate. In an editor, I would indeed tend to choose by punctual favorites. Outfits thought as a full set will be uncommon, to keep their prestige and ideal harmony (ideally, now we have to imagine it!).Homogeneity would be created with the different styles, colors, and themes(medieval, mythological, anachronistic, funny….
     I also started to see the limits of this method in terms of creativity, so everyone agreed on this idea, and here I was working on boards of objects (helmets / belts / clothes / shoulder pads / gauntlets), rather by theme (to avoid finding myself with a majority of objects too shifted from dWARf’s universe).

3D GRAPHICS - Liam

The creation of the Dwarf

With dWARf, our objective is to create a cartoon and funny game. We wanted the game to be populated with nice and funny characters. To me, in most of animated movies or video games, the attitudes of the character really defines their personality. The way he moves gives him their own traits and sensitivity, and therefore what makes him appealing and alive. For that reason, their design had to be original and allow us to create comic and varied animations afterwards.

     We all agreed on “floating” characters, without arms or legs, but wearing big gloves and shoulder pads to simulate an arm’s position in order to maintain a certain credibility and realism in their movements.

    Our dwarves now have an elongated silhouette, while keeping a potbelly as dwarves usually have, which will then allow us a wider variety and freedom in animations, whereas we would have been limited if we had kept a round appearance of the character (so they can lean forward, backward, swing left or right… among other things).

The customisation of the Dwarf

Dans dWARf, le joueur à la possibilité de créer son propre Dwarf qui sera son avatar au cours des parties, et devra donc être aisément reconnaissable par ce dernier par rapport aux Dwarves des autres joueurs.

    Ainsi, il nous a fallu définir quelles parties des Dwarves allaient être customisables lors de sa création.

     Nous avons décidé de garder fixe la morphologie du Dwarf, dans un souci d’adaptation des objets: en effet, si tous les personnages ont la même corpulence, ils peuvent alors tous porter les mêmes vêtement, sans distinctions, et sans demander des modifications de notre part outre mesure. Les Dwarfs seront donc tous trapus et ventripotents.

    Il en va de même pour les couvre-chefs: Comme nous avions en tête de créer des casques intégraux, qui reflètent bien l’univers du Nain Fantastique, une forme de tête standard permettait à tous les joueurs de pouvoir choisir n’importe quel casque, qui serait forcément adapté à la taille de sa tête.

     Une fois ce cadre défini, tous les autres éléments nous semblaient modifiables facilement.

Les formes de nez, d’yeux et la couleur de peau resteraient fixes après la création du personnage. Cependant, les éléments de pilosité (:sourcils, moustache, barbe et cheveux) pourraient être modifiés à tout moment, aussi bien leur forme que leur couleur, et indépendamment les uns des autres.

On her side, Audrey created a wide range of concepts she gave me, so that I could model the most of it in 3D.

     At this time, we realised we had an important issue : at first sight, some haircuts seemed incompatible with some sorts of hats. Regarding integration, we needed to see how we will manage these elements. Solune and I thought about the compatibility of these elements between them. Some hats just covered the entire haircut (full-face helmets), some hats naturally landed over the haircut (little hats), but some haircuts were almost impossible to combine with most of the hats (ponytail on the top of the head). Finally, Lauriane and Solune created a classification of haircuts, specifying which one was compatible or not with specific hats’ criteria in order to deal with the compatibility between all the elements, almost on a case-by-case basis.

      So I created different types of haircuts and hats to represent the diversity that will later exist, and to allow us to organise the management of the classifications directly.

 

      In dwarf’s editor, the remaining customisable elements are clothes : gloves, shoulder pads, belts and outfits. For these elements, compatibility problems didn’t show up because they didn’t overlap on one another, except for the belt that, theoretically, will always have the same shape and be placed at the same spot : a ring around dwarves’ waists.

      Audrey has created a lot of concepts for each object. As for hairiness, I didn’t have enough time to model a lot of objects in 3 dimensions, due to the short deadline of “Lyon eSport”. I then decided to reproduce the most varied elements which are also representing our game’s universe : fantasy elements from dwarves’ world, but also anachronistic and unusual elements.

To create as many elements as possible to be shown at “Lyon eSport”, I chose elements in Audrey’s researches and recreated them in 3D as close as I can not to misrepresent her concepts, but I took some liberties concerning the textures of objects, along with shapes modifications in three dimensions, which are invisible in two dimensions.

     At that time, Solune had to put all these elements in the game engine and created the interactions between interface and 3D models.

 

GAMEPLAY DEVELOPMENT - Solune

User Interface (UI) Integration

At first, we had this :

classic unity UI and a dwarf made of customisation elements with deformed and primitive shapes. Simple and efficient ! Unfortunately, it was not enough for Liam and Lauriane so I needed to do better :

     As a first step, I integrated the UI Audrey carefully prepared :

    To reach this point, we had to pay attention to several things :

– some UI elements have to be proportionate to the screen dimension, in order to support every ratio and resolution

– square elements have a dimension depending on the screen, the other being in function of the first

     Unity has tools allowing us to do these things easily :

The element will have a 60% width of its parent, and the “Aspect Ratio Fitter” ensure he will stay square ! Even empty, it was already beautiful ! I really wanted to complete it !

A little code

Then, a little more technical : how was it going about the code ? The dwarf being animated(unlike the pizza-dwarf) and having deformations in their animation, customisable elements had to follow this deformation. On this, most of the work was made by Liam, who binded (skin) different parts of the element to different parts of the dwarf’s body (bones), but I had to make sure that elements followed animations accurately when they were changed in the editor.

 

     In Unity, this could be made by using a skinned mesh renderer feature (for the skin) and an animator (with an Avatar that represents bones). To do so, the element was instantiated as the animator’s child, then the Rebind function of the animator was used.

    Until that time, everything was fine. Nonetheless, the Rebind function reseted dwarf’s animations and it was not really beautiful. I therefore saved the animation I was working on when I changed the element, and restarted where I was after making the change. In a nutshell, it roughly looked like this :

Integration of the elements

From here, we could clearly identify the issues concerning the creation of a dwarf with a greater or lesser choice of customisation we wanted for the game.

     For instance, although we wanted a lot of choice in dwarf’s editor, we chose not to make the player able to change their right gloves independently of the left ones (and the same for shoulder pads), for aesthetic and consistency matters, as our customisable objects are part of varied and often unique universes.

 

     As Liam already noticed it, an issue came out quickly about hats/masks compatibility and different parts of the face. Not to work on a case-by-case basis, hats and hair have criteria and some other rules automate the process : hair is removed under full-face helmets, light hats disappear on an irregular haircut, etc… The result of these criteria is an accounting matrixbetween hats/hair still adjustable on a case by case basis.

    Integrating all these elements wasn’t a simple work : once Liam sent me an element, I tested it to check if there was no graphic “bug”, I used a handmade script to create an icon from the element’s model, I set up exclusion rules and checked one last time if everything was okay.

MULTIPLAYER DEVELOPMENT - Alexandre

    February was quite busy concerning the field of multiplayer management, as well as managing interactions with the community.

    Most of my job being to create every network links of communication between the customer and Unexpected services, I was assigned to create (the technical part of) the ARG, taking place in February. Besides the ARG, advances were made on different services, including Unexpected account management service and server communication lib of Dwarf client.

Progress of Unexpected services

    As aforementioned, I mainly progressed on Unexpected’s core services during February : accounts access, users authentication, online payments management etc…I wanted to offer a service adapted to most users in a simple and efficient way.

     For this, I decided to develop a “cloud ready” application. It means that the application is designed to be put into production on one or more different servers so that the load can be distributed efficiently.

So I thought services with 3 different types of services : restful Applications Programming Interfaces (APIs) for accessing and modifying the data, notifications services for all that is in “real time” and services for the game’s servers.We can thus represent the interaction between an user adding another user as a friend like this:

The ARG

     The ARG organised during this month was for me a first challenge concerning Unexpected server load : more than 15 000 different IP addresses connected during the week that lasted the ARG. I also worked on the development of different riddles (mostly on the technical dev side [programming, production, etc.]), and the imagination of the latters with Unexpected’s team.

To split the load properly, I set an architecture up, which was simple but efficient :

     And it managed to support the transferred queries. In total, 606 188 queries were registered on web servers and more than 6 319 554 interactions were registered on real-time services (H.A. Grid [with 6 044 913 queries in 3 hours] and Andromeda [with 274 641 queries in 5 days]).

I was totally amazed by the ability of the community to coordinate ! Riddles were solved in a very efficient way, and we didn’t expect a community that large to be so organised !


     To conclude, this month has been really busy concerning multiplayer development and services : progress in Unexpected main services were made, just as in game servers (dWARf) and finally, a community event (ARG) that, in my opinion, went really well ! I think I can speak on behalf of Unexpected’s team : we all had fun watching the community interact around the riddles, and it made us even more motivated. We look forward to seeing future interactions in our upcoming game : dWARf !