Third Quarter of 2015: Ploucs Messenger

Since September, 13th 2015, I have started a new project named “Ploucs Messenger”. The idea of this project was born in January 2014 in one of my circle of friends named “Ploucs”. The idea was to get a personal group chat fully customizable. We wanted to have a HUB which shows the news, some posts of the forum, and some other plug-ins added to the main functionality: the chat.

Unfortunately, in 2014, my skills of network were not that high added to the fact that I have some other projects. Furthermore, I didn’t learn C++ programing neither a good library to develop quickly a software. Now, with Qt, I felt as I have all the tools to begin something amazing and quickly. This project came back to my mind with some new ideas and decided to explore deeper and deeper Qt library and C++ programing with this project.

Concept art of the HUB (2014)

Ploucs Messenger – What’s this?

The goal is to create an interface where we can add any plug-in we want such as:

  • Forum
  • News
  • Calendar
  • Script
  • Little Game
  • Dictation as a Game (I R`FM like)
  • Bot (Gustave)

The difficulty was at first to have a sort of server. This was solve by using a website and a ping each 100ms. However, it’s way better to have a real server which can keep track of the user connections. That is why the first Ploucs Messenger designed in September 13th was a TCP server.

Added to these features, I came up recently with some new ideas like a fade-in fade-out chat application when the mouse cursor moves in-out of the application. This will allow us to watch a video in full screen mode with the chat over the video as well as a video-game in the future.

Why now?

I wanted to start something different from the other months. I already programmed more than 4 games in a year and feel like I wanted to change. Earlier, I said that my next project will certainly be an OpenGL game, which is always on my planned tasks list, but because the Plouc’s group just reached a sort of reborn, it was the time to start Plouc’s Messenger. The goal will then to develop “the best” chat software regarding my group and after the world. For that, I am listening to everything the Plouc’s members said and try to implement as best as possible the best rated features. Banou is then the designer of Plouc’s Messenger and will be responsible of the whole art effect and other stuffs and Fox a tester as well as a sort of community manager.

And a release date?

I will not say that “This will be ready for early 2016″ because I don’t want to wait to get the general opinion on the different features I implemented after a lot of time. I want them now, as early as possible. For that, I am releasing a version each week with a bunch of new functionalities and the software is already usable. A sort of “Sprint” development method. However, the goal is to prepare the code for the other functionalities such as “Groups admin” and so on. So, the code has to respect a certain organization and try different methods to solve the same problem to choose the best one.

Interface - October 2015

Interface – October 2015

As a conclusion, I would like to say that this year will be a very busy year. I am involved in a new ENSICAEN project with a company named REALIZ which works on the Virtual Reality field, the field I am really interested in since the first time I was able to play video games with an innovative way, such as Wii or Kinect and so on. I will soon post about it! So, see you next time!

[Internship] NAIST – Imaging-based Computational Biomedicine

ICB Lab

Hello dear Gentlemen,

Currently in a 3-months internship in Japan, you might have seen that I didn’t spend much time either on my website or my EasyLD project nor 3D project. As expected, 90% of my time is dedicated to my internship, especially during the last month (this one). Quite a huge report to write, but also try to get the best result I can have with the work I am currently in.

So, what’s exactly my internship?

Good question. First of all, this internship is “Confidential”. I will try to explain my work but I will then be limited by the amount of data I can shared.

Where is your internship?

Currently at NAIST, near Nara (or Osaka) in the Kansai area of Japan. NAIST is one of the best University of Japan. I am working in the Imaging-based Computational Biomedicine Laboratory (ICB Lab) (Official website).

What about the organization?

The starting hour was 9h, until 20h approximately, depending on what you have to do. And this, 5 day a week. You was able to take some pauses (for example to buy some foods, or do a jogging). Each other week, a meeting was planned to see how the work is going on and discussed about the new possibilities and the future work. Each Monday and Wednesday, a meeting with all the members (Master 1 as well) of 2 hours and half explained some classic papers of imaging-based algorithm as well as bio-medicine. Some times, we had some business trips, like the visit of an endoscopic surgery using 3D glasses. We were welcomed by a welcome party, and each Friday night, the master 1 and some of the staffs lead a Nabe party to share happiness and conviviality. The labs got its first foreign student with our arrival. Following by another French master 1 and a doctoral student from America. The discussion were mainly in English regarding the meetings, but outside of them, Japanese was the first language. So, I had to learn as fast as possible the remaining missing words! (I already started Japanese courses in France, so it was sufficient enough at the beginning, but not enough to read a newspaper).

What about your work?

I am working on the “Hierarchical Multi-atlas Method” created by Prof. Yokota. My goal is to expand his method and try to improve it as much as possible. I will not speak about how this method works but only on what I am working because of confidentiality purpose. This method is applied to the femus/hip area. The goal is to segment 20 muscles of the hip with as less as possible manual segmentation. For this, we get 20 CT data-sets with their ground-truth of the 20 muscles. Here is an example of a launch:

1) We want to segment the 20 muscles of the target. We do not have any information about the target, except the CT images.
2) We got a multi-atlas of 19 atlases with their ground-truth of the 20 muscles. We will try to registered each of them to the target.
3) We do some kind of stuffs (confidential) to get the 20 muscles of the target.

Hierarchical Multi-atlas method (Available on the icb lab website)

My first work was, obviously, to understand his method, try to launch it and get some results. Then update the CT data-sets because 2 years ago, only one CT data-sets got his 20 muscles segmented. I did some manual segmentation because some muscles (3) were missing, using “Vincent” a software by Fuji-film. First time for me, because my university courses are not directly related to medical imaging. So, a great new experience.
During this work, I was able to do a study about how each step improves the final accuracy. This was really interesting because we saw that the use of every data-sets doesn’t mean that we will get the best segmentation of the 20 muscles of the target. In fact, some atlases can be a bad representation and will not help to be more accurate. This will lead my future works.

My second work was to improve this method as best as possible regarding different possibilities. Firstly regarding the last stage with “How to select the best atlas” question. Because of I am working in a laboratory, this step was a research step with some directions like SFS (Sequential Forward Selection).
This work was directly followed by a big work on an use of SFS algorithm for the 2nd step. The work consisted in the programming of the algorithm, but also on how to improve it and a study about the efficiency. I had to compare the standard SFS they used with my own sort of SFS totally different from them. My SFS was based on the target to get a result directly linked to the target when we are computing the similarities. Their SFS was about guessing a best combination of atlases inside the multi-atlas, without the target. My thought was this will not help enough to get the best final segmentation because we chose the best combination of atlases for the multi-atlas and not for the target. My SFS was a choice of a best combination for the target. The main idea was to combined both SFS to get a best segmentation. This is where I am currently working on.

The second work as you see seems to be quite long, especially because of “Research”. We don’t know which algorithm will be the best, and we have to do quite a lot of study, and experiments some new ways. Seeing the remaining time (3 weeks), I will be in a rush to end this as best as possible, and writing my report as well. I am really passionate by this subject, so I am feeling exciting by the result I will get, but also stressed because of the remaining time. I am quite sad to not be able to explain my research more than that because of confidentiality, but I hope this document showed you enough on what I am involved, and what kind of stuff I am doing.

The research domain is finally something that I can really think about it but I will wait next year to really decide where I will go. I really like to develop games, new stories, new way of thinking and new game-play as well that working on the medical field cannot be the best idea, even though there is innovation. I hope my next internship will be in the game development field! But before this, I will create another games for my next LD! And guess what? September will be a programing month, and I hope this month will not be a solo programing month ;) Maybe a cooperation with friends to sell a game at this end of the month (or two month? I don’t know, depending on the idea (I already have quite a lot)). Why selling? To see if I am able to end a game. Because every time I create a game,I stop after some times or don’t try to improve it. I have to push myself ahead because next year is my last year!

Moreover, I am now able to speak as well as English than Japanese even though my Japanese remains a little bit too low. Currently working on improving my basics of German because of shame. I hope I will be able to speak in German as good as my current level of Japanese and I hope that my level in Japanese will catch my level in English a day! Fluency, fluency everywhere! (English, Japanese, German and French, let’s try Korean!)

End of the school year, the rushing hour!

Hello there,

The biggest part of the school year 2014-2015 just began on Monday and it will end in the middle of april (with the Ludum Dare 32 on April, 17th). A lot of thing are coming in the next weeks. If you are a little bit curious, maybe you saw that some projects are almost ended. And yes, it is the case. That is why I am writing a post about the stuffs which are coming soon!

Let’s begin with the big school year project : Implementation on GPU and optimization of some image processing algorithms (Since November 2014).
This project approaches its end (on April, 9th we got a meeting with the company named ADCIS) and the final oral presentation is planned on April, 10th in the side of ENSICAEN. We are currently writing the report (90% of is done) and we are starting the oral presentation. Which means a lot of work, because of the two orals which are coming next week! A post in this blog will close the project after April, 10th.

Another project is EasyLD! This project is not done and it will not be done before April, 17th because it is something I want to improve in the next following months. But I want to launch the first version before this date, to start LD32 with it. The remaining thing are the camera and the software for area animation! One will end before April, 10th and the other one (software) is planned for the week before the LD32 date. I am very proud of this framework and I hope it will be fine for LD. The problem is I haven’t really tested this framework. I just wrote some tests and it was ok. But maybe when I program a game, some bugs will be found. That’s why I need to test it before LD. Maybe during the holidays (starting on April, 10th).

Another ENSICAEN project is currently in development! An OpenGL game. The beginning was on March, 31st and the work is really huge. That is why EasyLD is frozen until I finish developing the OpenGL game . The problem is I am currently waiting for some parts of the game to continue to program the game (Camera for example, a big feature). It sounds possible I will need to take this task on my own if we have no commit about it from the guy who has to do it before tonight. I really love developing a game with OpenGL but I am stuck because I cannot program whole the game, even though I am able to do it. I have to share the work, for the sake of the group. That is why I will make an OpenGL game another time on my own after LD32. One thing to know, the end date is on April, 7th just a week after the beginning (And we currently have no camera. I am gonna be in a hurry during this weekend). (If the result of the game ends in a beautiful game, I will post it here, but if it’s not the case, I will make it better before this!)

So, as you can see, it will not be really easy for me to be the best on all of these projects. Moreover I have some exams during this week. Some of them are done easily enough. Two more tomorrow and I will be able to work on my projects!

Even though it is a really huge week for work, I am really happy to do it and I love it. I hope all of these projects will end as perfectly as possible! I will try! :D

First Quarter of 2015 : EasyLD Project

In the beginning of 2015, I was pretty busy with a lot of stuff (Mainly due to exams of the first semester). But in the middle of January, I worked on a schedule for my next projects. And since the end of January, I am on a “huge” project. This project is : “EasyLD”. What’s the goal?

EasyLD is a game framework to allow a programmer to develop a game as easily and quickly as possible using Löve2D or Drystal game engine. Both of these game engines are Lua game engines. Both of them are really awesome but they are lacking of some stuff to allow you to develop a game quickly. It’s perfectly normal because a game engine should allow to program anything you want and doesn’t force a way. That is why EasyLD is there. During the two previous LD, I was programming the same parts and using some redundant stuff each time. For example, for drawing a rectangle, you need to give the X,Y,Width,Height each time you want to draw a rectangle. EasyLD allows you to create a Box item and this Box item got a method to draw himself by himself.

EasyLD wants to have some other stuff which are not a programing feature like a Map Editor. That’s is why EasyLD is not really a game framework, but a lot of tools to program a game quickly.

To date, a lot of features was implemented :

* Map Editor
* Framework

For the framework part :

* Map / Tileset
* Matrix / Vector / Point
* Area (contains shapes)
* Shape (Area, Polygon, Box, Circle, Segment, Point)
* Collide (Area, Polygon, Box, Circle, Segment, Point)
* InputText
* Font
* Keyboard, Mouse
* Timer (callback)
* Flux (tweening)
* Sprite animation

All of these stuffs are currently working on the latest version available in my Github. Nevertheless, all of these classes can change in the future. The first version will be available a little bit before the next LudumDare (17 April). I hope this will be available by the end of March.

What’s next? Many other stuff are planned :

* Music/Sound manager
* Gravity / Friction / Speed
* A finalize version of Entity
* Camera
* Mapping (Move informations automatized)

After all of these stuff, I will try to see if I need some other features. For that, I will read the code of my previous Ludum Dare.
To keep you up to date with this project, here is my Github : https://github.com/Goutye/EasyLD

[ENSICAEN] EasyGame : Boardgames Framework

   EasyGame – A Board Game Framework

 

The boardgames framework was one of the biggest projects of the 2nd year at ENSICAEN. (Junior year of Master Degree)
The goal was to program a framework which allowed a developer to create a board game as easily as possible. The client wanted to have a network implementation, a game manager and two games : Uno and Sheep war.
We were in a team of 4 persons and I was the team manager. The time allocated to us was only of 8 weeks. Thus, this project was really ambitious for the time given. To begin this project in good conditions, we decided to use a version manager (Git), a task organizer (Trello) and an IRC chat to stay in touch during holidays and weekends (Also a bot to save the pull requests when the integrator was not here).

sheepwar

Sheep war

Week after week

For the first two weeks, we focused ourselves on the UML modelisation of the framework. For this, we tried to develop a first game, “Tic tac toe”, to see what would be required in the framework, and which part would have to be developed by the user. With this, we started developing the primitive classes of the framework like Player, Board, Entity. Then, we tried to develop another game named “Othello” to see if our UML modelisation allowed for the implementation of any board game. At this stage, we had a first basic framework to develop some easy board games.

The next two weeks were focused on the implementation of the network features. We thought about it a lot and and validated the final version just at the beginning of the 3rd week. We had two possibilities at this moment,  implement a complex network system which would only send a list of actions between the client and the server or implement an easy network system which consisted to send the current gamestate to the client, then the client would send back the modified gamestate and so on. We chose the second one, the simplest one, because of the time remaining for the project. The problem with the second one is that the clients couldn’t interact during a turn that wasn’t theirs. However, for some board games, this kind of interactions can be required. Fortunately, there are in most cases ways around this problem. So, at the middle of the 5th week, we had the network implemented. We adapted our two first games, “tic tac toe” and “othello” in a network version and it worked well. We were proud of it. At this points, we started being very confident in our ability to finish the project in time.

Class diagram

Class Diagram

Between the week 5 and the week 7, we needed to add some features to the framework. At first, a plug-in feature. On the left side of the screen, you can create and add plug-ins for your game. An example for the Uno is the button to switch the color of a “+4 Cards/ Switch Color” card. In the Sheep War game, we have some plug-ins to rotate a card, to flip a card and one to indicate the player’s color. Secondly, we added the support for artificial intelligences. And thirdly, we continued to develop the game manager and adapting the first version with the network implementation. At the end of the 7th week, the game manager was able to download games from a server hosted by one of us, to update the games, to add a game and to launch the games with players who are either local, distant or an artificial intelligence. We also added a little feature which allowed the programmer to change the order in which the player play. In the side of the framework, the Sheep war and the Uno were programmed with the framework. The sheep war was longer than the Uno to program correctly because of the cards and the number of rules to compute the score. The Uno was programmed in 4h and 2h added for the graphic side. Thus, the required goal “Develop a framework to program board games as easily as possible ” was reached.

gamemanager

Game Manager

During the last week, the major part of the work was cleaning the code up. We also developed an AI for Uno and an AI for Sheep war. We improved the design of the game manager and the UI in a game. And one of the best test of our framework was to adapt a chess game from a previous project of one of my teammates to EasyGame. He succeeded in adapting it in only 5-6h. After many researches on a solution for the remaining bugs, we were out of time for some of them. We currently have an occasional bug on the display of the player list during a game. Sometimes, for no reason, the window does not want to resize when the waiting for the players ends. At last, the socket server sometimes stays open, blocking the port. These bugs are not really significant and do not prevent the player from playing the game correctly.

Our thoughts

So, we are here, at the end of the project, with a release candidate version of our framework, a game manager and five games. And my team manager cap is now on the ground. We were proud of what we were able to create in such a short period (8 weeks). The key of the project was to implement the network as early as possible. Without it, it would have been hard for us because the network part is the heart of the project. Without it, we can have neither a perfect game manager, nor the satisfaction of the client. We succeeded in splitting the framework development in a lot of tasks to have the maximum of productivity each time. Each one had a task and each one succeeded in completing it, even though when said person did not have the required competence at the beginning. We learned a lot about Java, about its libraries and about how to organize a group to develop as quickly as possible and as well as possible at the same time a software/framework/etc.

Uno

Uno

To me, this project was one of the best project I’ve worked on. Moreover, I was the team manager, so I was able to discover what it is like to be a team manager, how to organize the team, how to motivate the team, how to manage the issues between member and even manage the two other guys who were with us at the beginning of the project. It is not an easy role. You are always everywhere in the project and you need to interact with the client to satisfy him as best as you can. You do not count the number of hours you spend and you always have to be confident and happy. I liked this role, and I was also able to develop many things on the project like the two games (Uno and Sheep war). But in this position, you know that you will program less than the developers and spend more time managing, discussing, interacting about the project and with the client. This is really different from being a developer. The pressure is on your shoulders, and you choose the amount of pressure you put on the shoulders of your team.

Release Candidate

You can find .ZIP file below. The contents of the archive is :
– The framework
– The game manager
– Docs (Javadoc, developer guide, UML and a ANT script to build your game)
– Games (Chess, Sheep war, Uno, Othello, Tic tac toe)
– Presentation

Enjoy it! I hope you will find it really interesting and amazing, as we think!

EasyGame.zip

Thanks to Jérémy Anger, Steven Le Rouzic, Guillaume Kotulski to be my teammate during this project!

Gautier BOËDA