School work

[2021] AI project with cars [Qt+C++]

This project has been made in 2021, and this was one of my worst experiences in group work. Still (like the UE4 project), I was alone working on the main stuff: the AI.

The idea is that you have a generated map with a undetermined amount of cars which need to go to some destinations by optimizing their consumption.
A destination is a random place in the map (which isn’t a wall) a car can access ; so the car needs to go there without ever breaking down or by saving some time by going to a gas station next to him if he considers it necessary.

To do this, we decided to use some C++ with Qt. I made a lot of Swing projects so I wanted to use another language with another graphic library – let’s say this was a really bad idea because this made me losing a looot of time due to a lot of rookie mistakes on Qt, so I haven’t all the time to manage AI stuff.

The AI works by following the Dijkstra algorithm, in a multi-origin type as you don’t have one source but a list of sources (sources are vehicles). So, you have destinations and you need to calculate distances between destinations and vehicles, for the vehicles to go to their nearest destination and the vehicles who don’t have any destination go can be recharged at gas pumps. Obviously, vehicles need to optimize their way based on the road (the more vehicles pass on a road, the more road will be damaged and cause high consumption), the weather (you have higher consumption if there is rain than sun for example), the type of vehicle (car, truck) and a lot of other parameters.

If the algorithm works properly, then vehicles will be able to manage themselves and go to their destinations once possible without ever breaking down.

This was kind of fun, but this was a minimalist project so there is probably much more things to explore.
I would definitely not go with Qt anymore, as this is not something I would like to use in the future.

Some old pictures:

[2019] The Great Escape Remake – AI Based project [UE4]

This project was a school project of 1 year and a half, from the UML to the final presentation. We were initially a group of 5, but then this turned into a group of 2 people, where I was the project manager and the person who manages the Artificial Intelligence part.

I had the idea of remaking a unknown game on PS2 called « The Great Escape » – of course it is more a movie than a videogame. This is a videogame I have seen a few years ago, I created the wikipedia page about the game in 2014*, and then I had the idea to remake it one time. I wanted to remake the level, which I did with my level design skills, then I was dedicated to the AI stuff (as well as the lock system, time system, etc.).

This project was a good idea at first – but the lack of 3D models is making it unrealistic in a hand, and in the other hand a perfect AI stuff with different AI characters would need much more time – and it was not planned that I work alone on it.

[2020] Tennis system [Java Swing+UML]

This project was a school project where you had to create a whole Java Swing project from scratch. The project had to be around tennis.
The idea is to have a MySQL database with some data in it (tennis player names, referee names, disponibilities with courts, etc.) and a lot of constraints (a tennis player can’t play two matches if you don’t consider a certain interval of time, etc.)

There is a lot of features you have to consider to make you can generate a whole planning of tennis players, playing games (qualification /single / double. As a user you can set the score of the match which leads him to the next step until you have the winner of the competition.

In this project, I was making mainly the backend. The Swing interfaces, even if I know him, is not something I made here. I know how to use it, though, as I already used Swing for other projects.

The whole User Interface is written in French, though.

Generate a random planning with tennis players during a few days – they’ll take a random court, have a certain amount of time of rest and a lot of constraints I won’t list. You are also able to switch between two matches, or change them with the empty spaces.
There is a USER button at the bottom for any people to book a training court when possible, as shown here:

You are also able, once you’ve planned everything, to begin the tournament. A dynamic tree which is different depending on the type of match (qualification, single, double) will be shown, showing what’s happening during the tournament.

Qualification tree

If you want the tournament to end, you need to enter the score in the matches. The tree will be refreshed every time you enter a score so every time you have a winner, until the end. You can see some extra data retrieved from MySQL as the nationality, age and that kind of information.


File structure

There was a lot of other features not shown here as well as a PHP website, but I don’t want to show a work other teammates have made.
This project took about 30 hours, including some UML graphs to think about the project before doing anything else.

[2018] DE4DTeam – DE4DNONYMOUS [Python]

The idea was to create a Python game based on a labyrinth 2D with an incremental difficulty the more you pass levels.
The idea is quite simple, but this leads a bit of optimization to use the Pygame library (we decided to use it against Tkinter). At first it was intended to make something really easy but then we considered adding more difficulty the more you are in a high level, with only one life. The enemy can attack you and use the known right-hand rule to go to you. The generation is made using a known algorithm available on Stackoverflow, and modified a bit to fill the Python syntax.
We no more work together anymore, this website was part of the project to « sell » our idea but nothing more. In this project I was the « administrator » of the project as I was the person who had the more knowledges in our team for game development & website.


The source code of the project can be found on the website dedicated to our team, as this was a school project when we were rookies so it is used for some beginners to see how things work.